[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-4.0-testing] x86 hvm: Do not overwrite boot-cpu capability data on VMX/SVM startup.



# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1291117096 0
# Node ID 1f5186f596ba9023d53f0ed607473f80f90818f8
# Parent  465c81b077009ba3cb986caef2676c086718d71c
x86 hvm: Do not overwrite boot-cpu capability data on VMX/SVM startup.

Apparently required back in the earliest days of Xen, we now properly
initialise CPU capabilities early during bootstrap. Re-writing
capability data later now causes problems if specific features have
been deliberately masked out.

Thanks to Weidong Han at Intel for finding such a bug where XSAVE
feature is masked out by default, but then erroneously written back
during VMX initialisation. This would cause memory corruption problems
during boot for XSAVE-capable systems.

Signed-off-by: Keir Fraser <keir@xxxxxxx>
xen-unstable changeset:   22451:8420b82c22c2
xen-unstable date:        Tue Nov 30 11:34:08 2010 +0000
---
 xen/arch/x86/hvm/svm/svm.c |    3 ---
 xen/arch/x86/hvm/vmx/vmx.c |    3 ---
 2 files changed, 6 deletions(-)

diff -r 465c81b07700 -r 1f5186f596ba xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c        Mon Nov 29 14:46:43 2010 +0000
+++ b/xen/arch/x86/hvm/svm/svm.c        Tue Nov 30 11:38:16 2010 +0000
@@ -889,9 +889,6 @@ void start_svm(struct cpuinfo_x86 *c)
         return;
     }
 
-    /* Xen does not fill x86_capability words except 0. */
-    boot_cpu_data.x86_capability[5] = cpuid_ecx(0x80000001);
-
     if ( !test_bit(X86_FEATURE_SVME, &boot_cpu_data.x86_capability) )
         return;
 
diff -r 465c81b07700 -r 1f5186f596ba xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Mon Nov 29 14:46:43 2010 +0000
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Tue Nov 30 11:38:16 2010 +0000
@@ -1433,9 +1433,6 @@ void start_vmx(void)
         return;
     }
 
-    /* Xen does not fill x86_capability words except 0. */
-    boot_cpu_data.x86_capability[4] = cpuid_ecx(1);
-
     if ( !test_bit(X86_FEATURE_VMXE, &boot_cpu_data.x86_capability) )
         return;
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.