From: Sean Christopherson <sean.j.christopher...@intel.com>

Explicity check for an MMIO spte in the fast page fault flow.  TDX will
use a not-present entry for MMIO sptes, which can be mistaken for an
access-tracked spte since both have SPTE_SPECIAL_MASK set.

Signed-off-by: Sean Christopherson <sean.j.christopher...@intel.com>
---
 arch/x86/kvm/mmu/mmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 76de8d48165d..c4d657b26066 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -3090,7 +3090,7 @@ static int fast_page_fault(struct kvm_vcpu *vcpu, gpa_t 
cr2_or_gpa,
                                break;
 
                sp = sptep_to_sp(iterator.sptep);
-               if (!is_last_spte(spte, sp->role.level))
+               if (!is_last_spte(spte, sp->role.level) || is_mmio_spte(spte))
                        break;
 
                /*
-- 
2.17.1

Reply via email to