mbox series

[0/4] Small changes related to prefetch and spurious faults

Message ID 20250207030640.1585-1-yan.y.zhao@intel.com (mailing list archive)
Headers show
Series Small changes related to prefetch and spurious faults | expand

Message

Yan Zhao Feb. 7, 2025, 3:06 a.m. UTC
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@google.com/

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(-)