diff options
author | Sheng Yang <sheng@linux.intel.com> | 2008-11-06 14:55:45 +0800 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-11-11 21:00:37 +0200 |
commit | 928d4bf747e9c290b690ff515d8f81e8ee226d97 (patch) | |
tree | 3df5209cb7f85fddd8374dab314d31843d59e8fd /arch/x86/kvm/vmx.c | |
parent | ca93e992fdfdc6569ac2845d7560eeb5de4a4e0b (diff) | |
download | linux-928d4bf747e9c290b690ff515d8f81e8ee226d97.tar.gz linux-928d4bf747e9c290b690ff515d8f81e8ee226d97.tar.bz2 linux-928d4bf747e9c290b690ff515d8f81e8ee226d97.zip |
KVM: VMX: Set IGMT bit in EPT entry
There is a potential issue that, when guest using pagetable without vmexit when
EPT enabled, guest would use PAT/PCD/PWT bits to index PAT msr for it's memory,
which would be inconsistent with host side and would cause host MCE due to
inconsistent cache attribute.
The patch set IGMT bit in EPT entry to ignore guest PAT and use WB as default
memory type to protect host (notice that all memory mapped by KVM should be WB).
Signed-off-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/vmx.c')
-rw-r--r-- | arch/x86/kvm/vmx.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 2643b430d83a..d06b4dc0e2ea 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -3564,7 +3564,8 @@ static int __init vmx_init(void) bypass_guest_pf = 0; kvm_mmu_set_base_ptes(VMX_EPT_READABLE_MASK | VMX_EPT_WRITABLE_MASK | - VMX_EPT_DEFAULT_MT << VMX_EPT_MT_EPTE_SHIFT); + VMX_EPT_DEFAULT_MT << VMX_EPT_MT_EPTE_SHIFT | + VMX_EPT_IGMT_BIT); kvm_mmu_set_mask_ptes(0ull, 0ull, 0ull, 0ull, VMX_EPT_EXECUTABLE_MASK); kvm_enable_tdp(); |