Hi, This series contains some small changes related to prefetch/prefault and spurious faults. Patch 1 checks if a shadow-present old SPTE is leaf to determine a prefetch fault is spurious. Patch 2 merges the case of prefetch into the case of is_access_allowed(). Patch 3 is according to the previous discussion at [1]. Patch 4 always free obsolete roots before reload mmu. With below scenario 1. add a memslot with size 4K 2. prefault GPA A in the memslot 3. delete the memslot 4. re-add the memslot with size 2M 5. prefault GPA A again. Patch 1 is required if zap all quirk is disabled in step 3. Patch 5 is required if zap all is performed in step 3 and if step 2/5 are executed before any vcpu_run(). The series can be applied to both f7bafceba76e9ab475b413578c1757ee18c3e44b and eb723766b1030a23c38adf2348b7c3d1409d11f0. Thanks Yan [1] https://lore.kernel.org/kvm/Z2WTZGHmPDXHSrTA@xxxxxxxxxx/ Yan Zhao (4): KVM: x86/mmu: Further check old SPTE is leaf for spurious prefetch fault KVM: x86/tdp_mmu: Merge the prefetch into the is_access_allowed() check KVM: x86/mmu: Make sure pfn is not changed for spurious fault KVM: x86/mmu: Free obsolete roots when pre-faulting SPTEs arch/x86/kvm/mmu/mmu.c | 8 +++++++- arch/x86/kvm/mmu/tdp_mmu.c | 6 ++---- 2 files changed, 9 insertions(+), 5 deletions(-) -- 2.43.2