Hello community, here is the log from the commit of package xen checked in at Fri May 19 02:31:00 CEST 2006. -------- --- arch/i386/xen/xen.changes 2006-05-16 23:25:01.000000000 +0200 +++ xen/xen.changes 2006-05-19 02:01:41.000000000 +0200 @@ -1,0 +2,37 @@ +Thu May 18 09:50:11 MDT 2006 - ccoffing@novell.com + +- Include Intel's patch to fix installation of HVM W2k. This patch + adds decoding for 'xor' and 'and' instructions. Without this, + the VM crashes when W2k attempts to install network components. + (#176717) +- While tidying xen-hvm-memory-check.diff for submission upstream, + I noticed an error in the patch (such that low-memory while + starting the HVM domain could still crash the physical machine.) + Now all uses of iopm are protected by the check. (#149179) +- Xen must always relinquish control of the VGA console once dom0 + has started. Otherwise, it could be over-writing dom0's memory, + causing screen or other memory corruption. Admin can use + "xm dmesg" to view Xen's log instead. (#161541) +- First send a SIGTERM, rather than SIGKILL, to qemu to give it a + chance to clean up. This fixes both mouse and CD-ROM issues + for fully virtualized VMs. This is a work-around; Ross is + still working on the proper fix. (#176400, #171258, #176157) +- Include select patches from xen-3.0-testing: + + 9682,9683: These patches only affect full virtualization on + AMD. Fixes register corruption, cleans up event injection, + cleans up IO handling. + + 9685,9686: This patch only affects full virtualization on + Intel. Fixes VM's segment base address, to avoid vmentry + failure. Also remove 32/64 differences in vmx reg store/load. + +------------------------------------------------------------------- +Wed May 17 14:45:46 MDT 2006 - ccoffing@novell.com + +- When auto-ballooning domain 0's memory for a new HVM domain, + all memory (including memory intended for overhead) was given + to the VM itself. So increasing the memory size calculations + did not actually free up any more memory. Now, treat the amount + to balloon and the amount to give to the VM as separate values. + (#149179) + +------------------------------------------------------------------- New: ---- xen-9682-svm-update.diff xen-9683-svm-build-fix.diff xen-9685-segment-bases.diff xen-9686-32-64-vmx-regs.diff xen-console.diff xen-hvm-xor-and.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xen.spec ++++++ --- /var/tmp/diff_new_pack.zn3a3R/_old 2006-05-19 02:30:21.000000000 +0200 +++ /var/tmp/diff_new_pack.zn3a3R/_new 2006-05-19 02:30:21.000000000 +0200 @@ -19,7 +19,7 @@ %define with_pygrub 1 %define xen_build_dir xen-3.0-testing Version: 3.0.2_09668 -Release: 3 +Release: 4 License: GPL Group: System/Kernel Autoreqprov: on @@ -76,6 +76,8 @@ Patch36: xen-paths.diff Patch37: xen-hvm-rep-movs.diff Patch38: xen-lowmem-emergency-pool.diff +Patch39: xen-hvm-xor-and.diff +Patch40: xen-console.diff Patch49: xen-enable-hvm-debug.diff Patch50: xen-enable-debug Patch99: xen-poweroff.diff @@ -91,6 +93,10 @@ Patch109: xen-9674-ptrace-fpu.diff Patch110: xen-9675-ptrace-bounds.diff Patch111: xen-9678-hvm-pae-performance.diff +Patch112: xen-9682-svm-update.diff +Patch113: xen-9683-svm-build-fix.diff +Patch114: xen-9685-segment-bases.diff +Patch115: xen-9686-32-64-vmx-regs.diff URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ Prefix: /usr BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -446,6 +452,10 @@ %patch109 -p1 %patch110 -p1 %patch111 -p1 +%patch112 -p1 +%patch113 -p1 +%patch114 -p1 +%patch115 -p1 # Now our patches... %patch1 -p1 %patch2 -p1 @@ -487,6 +497,8 @@ %patch36 -p1 %patch37 -p1 %patch38 -p1 +%patch39 -p1 +%patch40 -p1 #%patch49 -p1 XEN_EXTRAVERSION=%version-%release XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}} @@ -793,6 +805,37 @@ %{insserv_cleanup} %changelog -n xen +* Thu May 18 2006 - ccoffing@novell.com +- Include Intel's patch to fix installation of HVM W2k. This patch + adds decoding for 'xor' and 'and' instructions. Without this, + the VM crashes when W2k attempts to install network components. + (#176717) +- While tidying xen-hvm-memory-check.diff for submission upstream, + I noticed an error in the patch (such that low-memory while + starting the HVM domain could still crash the physical machine.) + Now all uses of iopm are protected by the check. (#149179) +- Xen must always relinquish control of the VGA console once dom0 + has started. Otherwise, it could be over-writing dom0's memory, + causing screen or other memory corruption. Admin can use + "xm dmesg" to view Xen's log instead. (#161541) +- First send a SIGTERM, rather than SIGKILL, to qemu to give it a + chance to clean up. This fixes both mouse and CD-ROM issues + for fully virtualized VMs. This is a work-around; Ross is + still working on the proper fix. (#176400, #171258, #176157) +- Include select patches from xen-3.0-testing: + + 9682,9683: These patches only affect full virtualization on + AMD. Fixes register corruption, cleans up event injection, + cleans up IO handling. + + 9685,9686: This patch only affects full virtualization on + Intel. Fixes VM's segment base address, to avoid vmentry + failure. Also remove 32/64 differences in vmx reg store/load. +* Wed May 17 2006 - ccoffing@novell.com +- When auto-ballooning domain 0's memory for a new HVM domain, + all memory (including memory intended for overhead) was given + to the VM itself. So increasing the memory size calculations + did not actually free up any more memory. Now, treat the amount + to balloon and the amount to give to the VM as separate values. + (#149179) * Tue May 16 2006 - ccoffing@novell.com - Include Gerd's fix for HVM emulation of REP MOVS when the copy spans a page. If the direction flag was set, the emulation code ++++++ xen-9682-svm-update.diff ++++++ ++++ 792 lines (skipped) ++++++ xen-9683-svm-build-fix.diff ++++++ # HG changeset patch # User kaf24@firebug.cl.cam.ac.uk # Date Thu May 18 08:56:14 2006 +0100 # Node ID 614cb7ab15a860e95cd810e7ae34b952adad8db2 # parent: 5be39845d0183833dadc137e49e0d0c51bfe7674 Fix the build after SVM patches. Signed-off-by: Keir Fraser <keir@xensource.com> xen-unstable changeset: 10017:56444cd2805cf1b4bec168117305bcc9c64a80f4 xen-unstable date: Thu May 18 08:55:20 2006 +0100 --- a/xen/arch/x86/hvm/svm/svm.c Thu May 18 00:09:13 2006 +0100 +++ b/xen/arch/x86/hvm/svm/svm.c Thu May 18 08:56:14 2006 +0100 @@ -1302,9 +1302,10 @@ static void svm_io_instruction(struct vc size = 1; HVM_DBG_LOG(DBG_LEVEL_IO, - "svm_io_instruction: port 0x%x eip=%lx:%lx, " - "exit_qualification = %lx", - port, vmcb->cs.sel, vmcb->rip, (unsigned long)info.bytes); + "svm_io_instruction: port 0x%x eip=%x:%"PRIx64", " + "exit_qualification = %"PRIx64, + port, vmcb->cs.sel, vmcb->rip, info.bytes); + /* string instruction */ if (info.fields.str) { @@ -1313,7 +1314,7 @@ static void svm_io_instruction(struct vc if (!svm_get_io_address(v, regs, dir, &count, &addr)) { - /* We failed to get a valid address, so don't do the IO operation - + /* We failed to get a valid address, so don't do the IO operation - * it would just get worse if we do! Hopefully the guest is handing * gp-faults... */ ++++++ xen-9685-segment-bases.diff ++++++ # HG changeset patch # User kaf24@firebug.cl.cam.ac.uk # Date Thu May 18 16:07:49 2006 +0100 # Node ID 777a4c4641955f8c672fcf64d20cbf77efbade98 # parent: e8ca9f2cb0d1d2f186bd2219830c0e40510b9adb Ensure segment bases are consistent with their selectors for VMX guests in VM86 mode. Signed-off-by: David Lively <dlively@virtualiron.com> xen-unstable changeset: 9915:e1409c2ace46afd67b54de1f5c0b2b6d3721ca3b xen-unstable date: Wed May 3 10:56:19 2006 +0100 Fix mismerge of vmx vm86 patch: 9915:e1409c2ace46afd67b54de1f5c0b2b6d3721ca3b Signed-off-by: Keir Fraser <keir@xensource.com> xen-unstable changeset: 9920:915d5af5dc18f40f9ae9ac160263edb214ab0b0e xen-unstable date: Wed May 3 13:33:01 2006 +0100 --- a/xen/arch/x86/hvm/vmx/vmx.c Thu May 18 11:41:08 2006 +0100 +++ b/xen/arch/x86/hvm/vmx/vmx.c Thu May 18 16:07:49 2006 +0100 @@ -1,5 +1,5 @@ /* - * vmx.c: handling VMX architecture-related VM exits + * Vmx.c: handling VMX architecture-related VM exits * Copyright (c) 2004, Intel Corporation. * * This program is free software; you can redistribute it and/or modify it @@ -486,6 +486,45 @@ static void vmx_store_cpu_guest_regs( __vmptrld(virt_to_maddr(current->arch.hvm_vmx.vmcs)); } +/* + * The VMX spec (section 4.3.1.2, Checks on Guest Segment + * Registers) says that virtual-8086 mode guests' segment + * base-address fields in the VMCS must be equal to their + * corresponding segment selector field shifted right by + * four bits upon vmentry. + * + * This function (called only for VM86-mode guests) fixes + * the bases to be consistent with the selectors in regs + * if they're not already. Without this, we can fail the + * vmentry check mentioned above. + */ +static void fixup_vm86_seg_bases(struct cpu_user_regs *regs) +{ + int err = 0; + unsigned long base; + + err |= __vmread(GUEST_ES_BASE, &base); + if (regs->es << 4 != base) + err |= __vmwrite(GUEST_ES_BASE, regs->es << 4); + err |= __vmread(GUEST_CS_BASE, &base); + if (regs->cs << 4 != base) + err |= __vmwrite(GUEST_CS_BASE, regs->cs << 4); + err |= __vmread(GUEST_SS_BASE, &base); + if (regs->ss << 4 != base) + err |= __vmwrite(GUEST_SS_BASE, regs->ss << 4); + err |= __vmread(GUEST_DS_BASE, &base); + if (regs->ds << 4 != base) + err |= __vmwrite(GUEST_DS_BASE, regs->ds << 4); + err |= __vmread(GUEST_FS_BASE, &base); + if (regs->fs << 4 != base) + err |= __vmwrite(GUEST_FS_BASE, regs->fs << 4); + err |= __vmread(GUEST_GS_BASE, &base); + if (regs->gs << 4 != base) + err |= __vmwrite(GUEST_GS_BASE, regs->gs << 4); + + BUG_ON(err); +} + void vmx_load_cpu_guest_regs(struct vcpu *v, struct cpu_user_regs *regs) { if ( v != current ) @@ -539,6 +578,8 @@ void vmx_load_cpu_guest_regs(struct vcpu __vm_set_bit(EXCEPTION_BITMAP, EXCEPTION_BITMAP_DB); else __vm_clear_bit(EXCEPTION_BITMAP, EXCEPTION_BITMAP_DB); + if (regs->eflags & EF_VM) + fixup_vm86_seg_bases(regs); __vmwrite(GUEST_CS_SELECTOR, regs->cs); __vmwrite(GUEST_RIP, regs->eip); ++++++ xen-9686-32-64-vmx-regs.diff ++++++ # HG changeset patch # User kaf24@firebug.cl.cam.ac.uk # Date Thu May 18 17:24:16 2006 +0100 # Node ID 0db18b9c3efa5423998d4ffc15fc6e03b78b5a57 # parent: 777a4c4641955f8c672fcf64d20cbf77efbade98 Remove i386/x8664 differences in vmx reg store/load routines. Signed-off-by: Keir Fraser <keir@xensource.com> xen-unstable changeset: 9912:72d1cf383c679e1db24c92c7d89d7816b947eabe xen-unstable date: Tue May 2 17:17:15 2006 +0100 --- a/xen/arch/x86/hvm/vmx/vmx.c Thu May 18 16:07:49 2006 +0100 +++ b/xen/arch/x86/hvm/vmx/vmx.c Thu May 18 17:24:16 2006 +0100 @@ -451,17 +451,6 @@ static void vmx_store_cpu_guest_regs( if ( regs != NULL ) { -#if defined (__x86_64__) - __vmread(GUEST_RFLAGS, ®s->rflags); - __vmread(GUEST_SS_SELECTOR, ®s->ss); - __vmread(GUEST_CS_SELECTOR, ®s->cs); - __vmread(GUEST_DS_SELECTOR, ®s->ds); - __vmread(GUEST_ES_SELECTOR, ®s->es); - __vmread(GUEST_GS_SELECTOR, ®s->gs); - __vmread(GUEST_FS_SELECTOR, ®s->fs); - __vmread(GUEST_RIP, ®s->rip); - __vmread(GUEST_RSP, ®s->rsp); -#elif defined (__i386__) __vmread(GUEST_RFLAGS, ®s->eflags); __vmread(GUEST_SS_SELECTOR, ®s->ss); __vmread(GUEST_CS_SELECTOR, ®s->cs); @@ -471,7 +460,6 @@ static void vmx_store_cpu_guest_regs( __vmread(GUEST_FS_SELECTOR, ®s->fs); __vmread(GUEST_RIP, ®s->eip); __vmread(GUEST_RSP, ®s->esp); -#endif } if ( crs != NULL ) @@ -548,23 +536,6 @@ void vmx_load_cpu_guest_regs(struct vcpu ASSERT(v->arch.hvm_vmx.launch_cpu == smp_processor_id()); -#if defined (__x86_64__) - __vmwrite(GUEST_SS_SELECTOR, regs->ss); - __vmwrite(GUEST_DS_SELECTOR, regs->ds); - __vmwrite(GUEST_ES_SELECTOR, regs->es); - __vmwrite(GUEST_GS_SELECTOR, regs->gs); - __vmwrite(GUEST_FS_SELECTOR, regs->fs); - __vmwrite(GUEST_RSP, regs->rsp); - - __vmwrite(GUEST_RFLAGS, regs->rflags); - if (regs->rflags & EF_TF) - __vm_set_bit(EXCEPTION_BITMAP, EXCEPTION_BITMAP_DB); - else - __vm_clear_bit(EXCEPTION_BITMAP, EXCEPTION_BITMAP_DB); - - __vmwrite(GUEST_CS_SELECTOR, regs->cs); - __vmwrite(GUEST_RIP, regs->rip); -#elif defined (__i386__) __vmwrite(GUEST_SS_SELECTOR, regs->ss); __vmwrite(GUEST_DS_SELECTOR, regs->ds); __vmwrite(GUEST_ES_SELECTOR, regs->es); @@ -583,7 +554,6 @@ void vmx_load_cpu_guest_regs(struct vcpu __vmwrite(GUEST_CS_SELECTOR, regs->cs); __vmwrite(GUEST_RIP, regs->eip); -#endif /* Reload current VCPU's VMCS if it was temporarily unloaded. */ if ( (v != current) && hvm_guest(current) ) ++++++ xen-console.diff ++++++ Index: xen-3.0-testing/xen/arch/x86/setup.c =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/setup.c +++ xen-3.0-testing/xen/arch/x86/setup.c @@ -561,8 +561,11 @@ void __init __start_xen(multiboot_info_t init_trace_bufs(); - /* Give up the VGA console if DOM0 is configured to grab it. */ - console_endboot(cmdline && strstr(cmdline, "tty0")); + /* + * Always give up the VGA console, even if DOM0 seems to not use tty0, + * to avoid clashing with X's video memory. + */ + console_endboot(1); /* Hide UART from DOM0 if we're using it */ serial_endboot(); ++++++ xen-hvm-auto-balloon.diff ++++++ --- /var/tmp/diff_new_pack.zn3a3R/_old 2006-05-19 02:30:24.000000000 +0200 +++ /var/tmp/diff_new_pack.zn3a3R/_new 2006-05-19 02:30:24.000000000 +0200 @@ -10,7 +10,20 @@ import xen.lowlevel.xc from xen.xend import sxp -@@ -379,15 +380,17 @@ class HVMImageHandler(ImageHandler): +@@ -145,8 +146,10 @@ class ImageHandler: + + def getDomainMemory(self, mem): + """@return The memory required, in KiB, by the domain to store the +- given amount, also in KiB. This is normally just mem, but HVM domains +- have overheads to account for.""" ++ given amount, also in KiB. This is normally just mem, but if HVM is ++ supported, keep a little extra free.""" ++ if 'hvm' in xc.xeninfo()['xen_caps']: ++ mem += 4*1024; + return mem + + def buildDomain(self): +@@ -379,15 +382,20 @@ class HVMImageHandler(ImageHandler): os.waitpid(self.pid, 0) self.pid = 0 @@ -26,9 +39,25 @@ - return mem + extra_pages * page_kb + else: + page_kb = 4 -+ extra_mb = 48 ++ # This was derived emperically: ++ # 2.4 MB overhead per 1024 MB RAM + 8 MB constant ++ # + 4 to avoid low-memory condition ++ extra_mb = (2.4/1024) * (mem_kb/1024.0) + 12; + extra_pages = int( math.ceil( extra_mb*1024 / page_kb )) + return mem_kb + extra_pages * page_kb def register_shutdown_watch(self): """ add xen store watch on control/shutdown """ +Index: xen-3.0-testing/tools/python/xen/xend/XendDomainInfo.py +=================================================================== +--- xen-3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py ++++ xen-3.0-testing/tools/python/xen/xend/XendDomainInfo.py +@@ -1247,7 +1247,7 @@ class XendDomainInfo: + m = self.image.getDomainMemory(self.info['memory'] * 1024) + balloon.free(m) + xc.domain_setmaxmem(self.domid, m) +- xc.domain_memory_increase_reservation(self.domid, m, 0, 0) ++ xc.domain_memory_increase_reservation(self.domid, self.info['memory'] * 1024, 0, 0) + + self.createChannels() + ++++++ xen-hvm-memory-check.diff ++++++ --- /var/tmp/diff_new_pack.zn3a3R/_old 2006-05-19 02:30:24.000000000 +0200 +++ /var/tmp/diff_new_pack.zn3a3R/_new 2006-05-19 02:30:24.000000000 +0200 @@ -2,19 +2,14 @@ =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/hvm.c +++ xen-3.0-testing/xen/arch/x86/hvm/hvm.c -@@ -185,11 +185,16 @@ static void hvm_get_info(struct domain * - void hvm_setup_platform(struct domain* d) - { - struct hvm_domain *platform; -+ int rc; - +@@ -189,7 +189,11 @@ void hvm_setup_platform(struct domain* d if ( !hvm_guest(current) || (current->vcpu_id != 0) ) return; - shadow_direct_map_init(d); -+ rc = shadow_direct_map_init(d); -+ if ( rc == 0 ) { -+ printk("Insufficient memory to start domain.\n"); ++ if ( shadow_direct_map_init(d) == 0 ) ++ { ++ printk("Can not allocate shadow direct map for HVM domain.\n"); + domain_crash_synchronous(); + } @@ -24,38 +19,45 @@ =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/svm/svm.c +++ xen-3.0-testing/xen/arch/x86/hvm/svm/svm.c -@@ -451,6 +451,9 @@ int start_svm(void) - - if (!(test_bit(X86_FEATURE_SVME, &boot_cpu_data.x86_capability))) - return 0; -+ host_save_area[ cpu ] = alloc_host_save_area(); -+ if (! host_save_area[ cpu ]) -+ return 0; - - rdmsr(MSR_EFER, eax, edx); - eax |= EFER_SVME; -@@ -459,7 +462,6 @@ int start_svm(void) - printk("AMD SVM Extension is enabled for cpu %d.\n", cpu ); +@@ -467,13 +467,20 @@ int start_svm(void) /* Initialize the HSA for this core */ -- host_save_area[ cpu ] = alloc_host_save_area(); - phys_hsa = (u64) virt_to_maddr( host_save_area[ cpu ] ); + svm_globals[cpu].hsa = alloc_host_save_area(); ++ if (! svm_globals[cpu].hsa) ++ return 0; + phys_hsa = (u64) virt_to_maddr( svm_globals[cpu].hsa ); phys_hsa_lo = (u32) phys_hsa; phys_hsa_hi = (u32) (phys_hsa >> 32); + wrmsr(MSR_K8_VM_HSAVE_PA, phys_hsa_lo, phys_hsa_hi); + svm_globals[cpu].hsa_pa = phys_hsa; + +- svm_globals[cpu].scratch_hsa = alloc_host_save_area(); ++ svm_globals[cpu].scratch_hsa = alloc_host_save_area(); ++ if (! svm_globals[cpu].scratch_hsa) ++ { ++ free_host_save_area(svm_globals[cpu].hsa); ++ return 0; ++ } + svm_globals[cpu].scratch_hsa_pa = (u64)virt_to_maddr( svm_globals[cpu].scratch_hsa ); + + /* Setup HVM interfaces */ Index: xen-3.0-testing/xen/arch/x86/hvm/svm/vmcb.c =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/svm/vmcb.c +++ xen-3.0-testing/xen/arch/x86/hvm/svm/vmcb.c -@@ -143,18 +143,19 @@ static int construct_vmcb_controls(struc +@@ -139,18 +139,21 @@ static int construct_vmcb_controls(struc /* The following is for I/O and MSR permision map */ iopm = alloc_xenheap_pages(get_order_from_bytes(IOPM_SIZE)); - - ASSERT(iopm); - memset(iopm, 0xff, IOPM_SIZE); +- clear_bit(PC_DEBUG_PORT, iopm); + if (iopm) ++ { + memset(iopm, 0xff, IOPM_SIZE); - clear_bit(PC_DEBUG_PORT, iopm); ++ clear_bit(PC_DEBUG_PORT, iopm); ++ } msrpm = alloc_xenheap_pages(get_order_from_bytes(MSRPM_SIZE)); - - ASSERT(msrpm); ++++++ xen-hvm-xor-and.diff ++++++ I have submitted a new bug on Novell bugzilla for the win2k installation issue. The patch has been attached in the bug. https://bugzilla.novell.com/show_bug.cgi?id=176717 "Zhao, Yunfeng" <yunfeng.zhao@intel.com> Index: xen-3.0-testing/xen/arch/x86/hvm/platform.c =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/platform.c +++ xen-3.0-testing/xen/arch/x86/hvm/platform.c @@ -380,6 +380,12 @@ static int hvm_decode(int realmode, unsi GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); return reg_mem(instr->op_size, opcode, instr, rex); + case 0x22: /* and m8, r8 */ + instr->instr = INSTR_AND; + instr->op_size = BYTE; + GET_OP_SIZE_FOR_BYTE(size_reg); + return mem_reg(size_reg, opcode, instr, rex); + case 0x23: /* and m32/16, r32/16 */ instr->instr = INSTR_AND; GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); @@ -396,6 +402,12 @@ static int hvm_decode(int realmode, unsi GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); return reg_mem(instr->op_size, opcode, instr, rex); + case 0x32: /* xor m8, r8*/ + instr->instr = INSTR_XOR; + instr->op_size = BYTE; + GET_OP_SIZE_FOR_BYTE(size_reg); + return mem_reg(size_reg, opcode, instr, rex); + case 0x39: /* cmp r32/16, m32/16 */ instr->instr = INSTR_CMP; GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); ++++++ xen-lost-mouse.diff ++++++ --- /var/tmp/diff_new_pack.zn3a3R/_old 2006-05-19 02:30:24.000000000 +0200 +++ /var/tmp/diff_new_pack.zn3a3R/_new 2006-05-19 02:30:24.000000000 +0200 @@ -12,3 +12,25 @@ SDL_Quit(); } +Index: xen-3.0-testing/tools/python/xen/xend/image.py +=================================================================== +--- xen-3.0-testing.orig/tools/python/xen/xend/image.py ++++ xen-3.0-testing/tools/python/xen/xend/image.py +@@ -376,9 +376,16 @@ class HVMImageHandler(ImageHandler): + def destroy(self): + self.unregister_shutdown_watch(); + import signal ++ import time + if not self.pid: + return +- os.kill(self.pid, signal.SIGKILL) ++ os.kill(self.pid, signal.SIGTERM) ++ # This is a temporary work-around for bug 176400 ++ time.sleep(2) ++ try: ++ os.kill(self.pid, signal.SIGKILL) ++ except: ++ pass + os.waitpid(self.pid, 0) + self.pid = 0 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...
participants (1)
-
root@suse.de