From 74f4b5d3eb017e5ecee29025f1459336be0dc2b7 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 21 Jan 2009 16:52:16 +0800 Subject: [PATCH] --- yaml --- r: 131371 b: refs/heads/master c: 2aaf69dcee864f4fb6402638dd2f263324ac839f h: refs/heads/master i: 131369: 51fce20a48858bca75c842270e1f6a8d81d0bad2 131367: fbf78e67e719ab565b2321cdcc51db4cb9eac9a9 v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/mmu.c | 9 +++++++-- trunk/arch/x86/kvm/vmx.c | 3 +-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 3f294e440124..740e56755dcf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: abe6655dd699069b53bcccbc65b2717f60203b12 +refs/heads/master: 2aaf69dcee864f4fb6402638dd2f263324ac839f diff --git a/trunk/arch/x86/kvm/mmu.c b/trunk/arch/x86/kvm/mmu.c index 83f11c7474a1..2d4477c71473 100644 --- a/trunk/arch/x86/kvm/mmu.c +++ b/trunk/arch/x86/kvm/mmu.c @@ -1698,8 +1698,13 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte, if (largepage) spte |= PT_PAGE_SIZE_MASK; if (mt_mask) { - mt_mask = get_memory_type(vcpu, gfn) << - kvm_x86_ops->get_mt_mask_shift(); + if (!kvm_is_mmio_pfn(pfn)) { + mt_mask = get_memory_type(vcpu, gfn) << + kvm_x86_ops->get_mt_mask_shift(); + mt_mask |= VMX_EPT_IGMT_BIT; + } else + mt_mask = MTRR_TYPE_UNCACHABLE << + kvm_x86_ops->get_mt_mask_shift(); spte |= mt_mask; } diff --git a/trunk/arch/x86/kvm/vmx.c b/trunk/arch/x86/kvm/vmx.c index 6259d7467648..07491c9c6ed0 100644 --- a/trunk/arch/x86/kvm/vmx.c +++ b/trunk/arch/x86/kvm/vmx.c @@ -3687,8 +3687,7 @@ static int __init vmx_init(void) if (vm_need_ept()) { bypass_guest_pf = 0; kvm_mmu_set_base_ptes(VMX_EPT_READABLE_MASK | - VMX_EPT_WRITABLE_MASK | - VMX_EPT_IGMT_BIT); + VMX_EPT_WRITABLE_MASK); kvm_mmu_set_mask_ptes(0ull, 0ull, 0ull, 0ull, VMX_EPT_EXECUTABLE_MASK, VMX_EPT_DEFAULT_MT << VMX_EPT_MT_EPTE_SHIFT);