diff options
Diffstat (limited to 'arch/x86/kvm/mmu.c')
| -rw-r--r-- | arch/x86/kvm/mmu.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 83f11c7474a1..2d4477c71473 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c  | |||
| @@ -1698,8 +1698,13 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte, | |||
| 1698 | if (largepage) | 1698 | if (largepage) | 
| 1699 | spte |= PT_PAGE_SIZE_MASK; | 1699 | spte |= PT_PAGE_SIZE_MASK; | 
| 1700 | if (mt_mask) { | 1700 | if (mt_mask) { | 
| 1701 | mt_mask = get_memory_type(vcpu, gfn) << | 1701 | if (!kvm_is_mmio_pfn(pfn)) { | 
| 1702 | kvm_x86_ops->get_mt_mask_shift(); | 1702 | mt_mask = get_memory_type(vcpu, gfn) << | 
| 1703 | kvm_x86_ops->get_mt_mask_shift(); | ||
| 1704 | mt_mask |= VMX_EPT_IGMT_BIT; | ||
| 1705 | } else | ||
| 1706 | mt_mask = MTRR_TYPE_UNCACHABLE << | ||
| 1707 | kvm_x86_ops->get_mt_mask_shift(); | ||
| 1703 | spte |= mt_mask; | 1708 | spte |= mt_mask; | 
| 1704 | } | 1709 | } | 
| 1705 | 1710 | ||
