diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-01-12 09:29:38 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-01-12 09:29:38 +0000 |
commit | 3790d2ab9b967c9c3dfdedb56c22bc01b07ffbc2 (patch) | |
tree | 627621c9052555aba63623a351acdf9f3b898afb | |
parent | 93c129e9bda29bc15c1cd79cb7ef609cdfa7a1dd (diff) | |
download | xen-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.c | 6 |
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) | |