Mailinglist Archive: opensuse-commit (1206 mails)

< Previous Next >
commit xen
  • From: root@xxxxxxx (h_root)
  • Date: Fri, 19 May 2006 02:31:00 +0200 (CEST)
  • Message-id: <20060519003100.662BC8EFC8@xxxxxxxxxxxxxxx>

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@xxxxxxxxxx
+
+- 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@xxxxxxxxxx
+
+- 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@xxxxxxxxxx
+- 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@xxxxxxxxxx
+- 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@xxxxxxxxxx
- 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@xxxxxxxxxxxxxxxxxxxx
# 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@xxxxxxxxxxxxx>
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@xxxxxxxxxxxxxxxxxxxx
# 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@xxxxxxxxxxxxxxx>
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@xxxxxxxxxxxxx>
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@xxxxxxxxxxxxxxxxxxxx
# 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@xxxxxxxxxxxxx>
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, &regs->rflags);
- __vmread(GUEST_SS_SELECTOR, &regs->ss);
- __vmread(GUEST_CS_SELECTOR, &regs->cs);
- __vmread(GUEST_DS_SELECTOR, &regs->ds);
- __vmread(GUEST_ES_SELECTOR, &regs->es);
- __vmread(GUEST_GS_SELECTOR, &regs->gs);
- __vmread(GUEST_FS_SELECTOR, &regs->fs);
- __vmread(GUEST_RIP, &regs->rip);
- __vmread(GUEST_RSP, &regs->rsp);
-#elif defined (__i386__)
__vmread(GUEST_RFLAGS, &regs->eflags);
__vmread(GUEST_SS_SELECTOR, &regs->ss);
__vmread(GUEST_CS_SELECTOR, &regs->cs);
@@ -471,7 +460,6 @@ static void vmx_store_cpu_guest_regs(
__vmread(GUEST_FS_SELECTOR, &regs->fs);
__vmread(GUEST_RIP, &regs->eip);
__vmread(GUEST_RSP, &regs->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@xxxxxxxxx>

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...


< Previous Next >