diff options
author | Yang, Wei Y <wei.y.yang@intel.com> | 2011-05-30 23:17:42 +0800 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-06-14 09:34:35 -0500 |
commit | 38ca003c72156f5aab75e88f356d980d236ad69e (patch) | |
tree | 0c7a096bd52bbdc98e06c691973fba45414bc22e /target-i386/cpuid.c | |
parent | 9b55870f3062492cb39ff14107666747f7a32c65 (diff) | |
download | qemu-38ca003c72156f5aab75e88f356d980d236ad69e.tar.gz qemu-38ca003c72156f5aab75e88f356d980d236ad69e.tar.bz2 qemu-38ca003c72156f5aab75e88f356d980d236ad69e.zip |
kvm: Enable CPU SMEP feature
This patchset enables a new CPU feature SMEP (Supervisor Mode Execution
Protection) in QEMU-KVM. SMEP prevents kernel from executing code in application.
Updated Intel SDM describes this CPU feature. The document will be published soon.
SMEP is identified by CPUID leaf 7 EBX[7], which is 0 before. Get the right value by query KVM kernel module, so that guest can get SMEP through CPUID.
Signed-off-by: Yang, Wei <wei.y.yang@intel.com>
Singed-off-by: Shan, Haitao <haitao.shan@intel.com>
Singed-off-by: Li, Xin <xin.li@intel.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'target-i386/cpuid.c')
-rw-r--r-- | target-i386/cpuid.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index 40a73c7d11..79e7580c17 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -1142,6 +1142,19 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, *ecx = 0; *edx = 0; break; + case 7: + if (kvm_enabled()) { + *eax = kvm_arch_get_supported_cpuid(env, 0x7, count, R_EAX); + *ebx = kvm_arch_get_supported_cpuid(env, 0x7, count, R_EBX); + *ecx = kvm_arch_get_supported_cpuid(env, 0x7, count, R_ECX); + *edx = kvm_arch_get_supported_cpuid(env, 0x7, count, R_EDX); + } else { + *eax = 0; + *ebx = 0; + *ecx = 0; + *edx = 0; + } + break; case 9: /* Direct Cache Access Information Leaf */ *eax = 0; /* Bits 0-31 in DCA_CAP MSR */ |