aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-12 09:29:38 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-12 09:29:38 +0000
commit3790d2ab9b967c9c3dfdedb56c22bc01b07ffbc2 (patch)
tree627621c9052555aba63623a351acdf9f3b898afb
parent93c129e9bda29bc15c1cd79cb7ef609cdfa7a1dd (diff)
downloadxen-3790d2ab9b967c9c3dfdedb56c22bc01b07ffbc2.tar.gz
xen-3790d2ab9b967c9c3dfdedb56c22bc01b07ffbc2.tar.bz2
xen-3790d2ab9b967c9c3dfdedb56c22bc01b07ffbc2.zip
svm: Properly mask unsupported bits in CPUID_80000001_ECX.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r--xen/arch/x86/hvm/svm/svm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index cb4ebdd4d9..15ade3025d 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1009,6 +1009,12 @@ static void svm_vmexit_do_cpuid(struct vmcb_struct *vmcb,
__clear_bit(X86_FEATURE_PSE36 & 31, &edx);
/* Filter all other features according to a whitelist. */
+ ecx &= (bitmaskof(X86_FEATURE_LAHF_LM) |
+ bitmaskof(X86_FEATURE_ALTMOVCR) |
+ bitmaskof(X86_FEATURE_ABM) |
+ bitmaskof(X86_FEATURE_SSE4A) |
+ bitmaskof(X86_FEATURE_MISALIGNSSE) |
+ bitmaskof(X86_FEATURE_3DNOWPF));
edx &= (0x0183f3ff | /* features shared with 0x00000001:EDX */
bitmaskof(X86_FEATURE_NX) |
bitmaskof(X86_FEATURE_LM) |