diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/debugger/gdb/gdbbuild | 10 | ||||
-rw-r--r-- | tools/firmware/hvmloader/Makefile | 3 | ||||
-rw-r--r-- | tools/firmware/vmxassist/Makefile | 3 | ||||
-rw-r--r-- | tools/python/xen/xend/image.py | 4 | ||||
-rw-r--r-- | tools/python/xen/xend/server/blkif.py | 12 | ||||
-rw-r--r-- | tools/vtpm_manager/manager/dmictl.c | 9 | ||||
-rw-r--r-- | tools/vtpm_manager/manager/securestorage.c | 13 | ||||
-rw-r--r-- | tools/vtpm_manager/manager/vtpm_manager.c | 1 | ||||
-rw-r--r-- | tools/vtpm_manager/manager/vtpmpriv.h | 1 |
9 files changed, 41 insertions, 15 deletions
diff --git a/tools/debugger/gdb/gdbbuild b/tools/debugger/gdb/gdbbuild index 9b106971ea..fbd225a0c0 100755 --- a/tools/debugger/gdb/gdbbuild +++ b/tools/debugger/gdb/gdbbuild @@ -1,7 +1,9 @@ #!/bin/sh +[ "$GDB_MIRROR" ] || GDB_MIRROR="ftp://ftp.gnu.org/gnu/gdb/" + rm -rf gdb-6.2.1 gdb-6.2.1-linux-i386-xen -[ -a gdb-6.2.1.tar.bz2 ] || wget -c ftp://ftp.gnu.org/gnu/gdb/gdb-6.2.1.tar.bz2 +[ -a gdb-6.2.1.tar.bz2 ] || wget -c "$GDB_MIRROR/gdb-6.2.1.tar.bz2" tar xjf gdb-6.2.1.tar.bz2 cd gdb-6.2.1-xen-sparse @@ -12,8 +14,10 @@ mkdir gdb-6.2.1-linux-i386-xen cd gdb-6.2.1-linux-i386-xen ../gdb-6.2.1/configure -# some people don't have gmake -if which gmake ; then +# Use $MAKE if set, else use gmake if present, otherwise use make +if [ "$MAKE" ]; then + $MAKE +elif which gmake ; then gmake -j4 else make -j4 diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index 421224c60a..ff95836e90 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -18,6 +18,9 @@ # Place - Suite 330, Boston, MA 02111-1307 USA. # +# External CFLAGS can do more harm than good. +CFLAGS := + XEN_ROOT = ../../.. include $(XEN_ROOT)/Config.mk diff --git a/tools/firmware/vmxassist/Makefile b/tools/firmware/vmxassist/Makefile index 814bf16396..aabd32cc1a 100644 --- a/tools/firmware/vmxassist/Makefile +++ b/tools/firmware/vmxassist/Makefile @@ -18,6 +18,9 @@ # Place - Suite 330, Boston, MA 02111-1307 USA. # +# External CFLAGS can do more harm than good. +CFLAGS := + XEN_ROOT = ../../.. include $(XEN_ROOT)/Config.mk diff --git a/tools/python/xen/xend/image.py b/tools/python/xen/xend/image.py index 4d58c25d9a..f9b061a4ec 100644 --- a/tools/python/xen/xend/image.py +++ b/tools/python/xen/xend/image.py @@ -274,6 +274,10 @@ class HVMImageHandler(ImageHandler): uname = sxp.child_value(info, 'uname') typedev = sxp.child_value(info, 'dev') (_, vbdparam) = string.split(uname, ':', 1) + + if 'file:' in uname and not os.path.isfile(vbdparam): + raise VmError('Disk image does not exist: %s' % vbdparam) + if 'ioemu:' in typedev: (emtype, vbddev) = string.split(typedev, ':', 1) else: diff --git a/tools/python/xen/xend/server/blkif.py b/tools/python/xen/xend/server/blkif.py index 23135aa08b..02cd4f26f7 100644 --- a/tools/python/xen/xend/server/blkif.py +++ b/tools/python/xen/xend/server/blkif.py @@ -42,10 +42,6 @@ class BlkifController(DevController): """@see DevController.getDeviceDetails""" dev = sxp.child_value(config, 'dev') - if 'ioemu:' in dev: - return (None,{},{}) - - devid = blkif.blkdev_name_to_number(dev) (typ, params) = string.split(sxp.child_value(config, 'uname'), ':', 1) back = { 'dev' : dev, @@ -54,7 +50,13 @@ class BlkifController(DevController): 'mode' : sxp.child_value(config, 'mode', 'r') } - front = { 'virtual-device' : "%i" % devid } + if 'ioemu:' in dev: + (dummy, dev1) = string.split(dev, ':', 1) + devid = blkif.blkdev_name_to_number(dev1) + front = {} + else: + devid = blkif.blkdev_name_to_number(dev) + front = { 'virtual-device' : "%i" % devid } return (devid, back, front) diff --git a/tools/vtpm_manager/manager/dmictl.c b/tools/vtpm_manager/manager/dmictl.c index 17625bc633..ffbd5cd7f2 100644 --- a/tools/vtpm_manager/manager/dmictl.c +++ b/tools/vtpm_manager/manager/dmictl.c @@ -74,7 +74,13 @@ TPM_RESULT close_dmi( VTPM_DMI_RESOURCE *dmi_res) { close(dmi_res->guest_tx_fh); dmi_res->guest_tx_fh = -1; close(dmi_res->vtpm_tx_fh); dmi_res->vtpm_tx_fh = -1; - + vtpm_globals->connected_dmis--; + + if (vtpm_globals->connected_dmis == 0) { + // No more DMI's connected. Close fifo to prevent a broken pipe. + close(vtpm_globals->guest_rx_fh); + vtpm_globals->guest_rx_fh = -1; + } #ifndef MANUAL_DM_LAUNCH if (dmi_res->dmi_id != VTPM_CTL_DM) { if (dmi_res->dmi_pid != 0) { @@ -118,6 +124,7 @@ TPM_RESULT VTPM_Handle_New_DMI( const buffer_t *param_buf) { status = TPM_BAD_PARAMETER; goto abort_egress; } else { + vtpm_globals->connected_dmis++; // Put this here so we don't count Dom0 BSG_UnpackList( param_buf->bytes, 3, BSG_TYPE_BYTE, &type, BSG_TYPE_UINT32, &domain_id, diff --git a/tools/vtpm_manager/manager/securestorage.c b/tools/vtpm_manager/manager/securestorage.c index 4df8531c40..1c4bd4931e 100644 --- a/tools/vtpm_manager/manager/securestorage.c +++ b/tools/vtpm_manager/manager/securestorage.c @@ -307,8 +307,8 @@ TPM_RESULT VTPM_SaveService(void) { TPM_RESULT status=TPM_SUCCESS; int fh, dmis=-1; - BYTE *flat_boot_key, *flat_dmis, *flat_enc; - buffer_t clear_flat_global, enc_flat_global; + BYTE *flat_boot_key=NULL, *flat_dmis=NULL, *flat_enc=NULL; + buffer_t clear_flat_global=NULL_BUF, enc_flat_global=NULL_BUF; UINT32 storageKeySize = buffer_len(&vtpm_globals->storageKeyWrap); UINT32 bootKeySize = buffer_len(&vtpm_globals->bootKeyWrap); struct pack_buf_t storage_key_pack = {storageKeySize, vtpm_globals->storageKeyWrap.bytes}; @@ -328,12 +328,9 @@ TPM_RESULT VTPM_SaveService(void) { sizeof(UINT32) +// storagekeysize storageKeySize, NULL) ); // storage key - flat_dmis_size = (hashtable_count(vtpm_globals->dmi_map) - 1) * // num DMIS (-1 for Dom0) - (sizeof(UINT32) + 2*sizeof(TPM_DIGEST)); // Per DMI info flat_boot_key = (BYTE *) malloc( boot_key_size ); flat_enc = (BYTE *) malloc( sizeof(UINT32) ); - flat_dmis = (BYTE *) malloc( flat_dmis_size ); boot_key_size = BSG_PackList(flat_boot_key, 1, BSG_TPM_SIZE32_DATA, &boot_key_pack); @@ -349,9 +346,13 @@ TPM_RESULT VTPM_SaveService(void) { BSG_PackConst(buffer_len(&enc_flat_global), 4, flat_enc); - // Per DMI values to be saved + // Per DMI values to be saved (if any exit) if (hashtable_count(vtpm_globals->dmi_map) > 0) { + flat_dmis_size = (hashtable_count(vtpm_globals->dmi_map) - 1) * // num DMIS (-1 for Dom0) + (sizeof(UINT32) + 2*sizeof(TPM_DIGEST)); // Per DMI info + flat_dmis = (BYTE *) malloc( flat_dmis_size ); + dmi_itr = hashtable_iterator(vtpm_globals->dmi_map); do { dmi_res = (VTPM_DMI_RESOURCE *) hashtable_iterator_value(dmi_itr); diff --git a/tools/vtpm_manager/manager/vtpm_manager.c b/tools/vtpm_manager/manager/vtpm_manager.c index ab391a6ccc..e9061aabed 100644 --- a/tools/vtpm_manager/manager/vtpm_manager.c +++ b/tools/vtpm_manager/manager/vtpm_manager.c @@ -754,6 +754,7 @@ TPM_RESULT VTPM_Init_Service() { #ifndef VTPM_MULTI_VM vtpm_globals->vtpm_rx_fh = -1; vtpm_globals->guest_rx_fh = -1; + vtpm_globals->connected_dmis = 0; #endif if ((vtpm_globals->dmi_map = create_hashtable(10, hashfunc32, equals32)) == NULL){ status = TPM_FAIL; diff --git a/tools/vtpm_manager/manager/vtpmpriv.h b/tools/vtpm_manager/manager/vtpmpriv.h index 845cf011dd..c579d50518 100644 --- a/tools/vtpm_manager/manager/vtpmpriv.h +++ b/tools/vtpm_manager/manager/vtpmpriv.h @@ -98,6 +98,7 @@ typedef struct tdVTPM_GLOBALS { #ifndef VTPM_MULTI_VM int vtpm_rx_fh; int guest_rx_fh; + int connected_dmis; // Used to close guest_rx when no dmis are connected pid_t master_pid; #endif |