[PATCH 20/24] KVM: x86/mmu: Do not prefetch sptes on gfns backed by memory attributes

From: Paolo Bonzini

Date: Thu Jul 16 2026 - 14:33:46 EST


From: Nicolas Saenz Julienne <nsaenz@xxxxxxxxxx>

Prefetched SPTEs are always given full access. Do not prefetch GFNs
that have memory protections applied.

Signed-off-by: Nicolas Saenz Julienne <nsaenz@xxxxxxxxxx>
Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
---
arch/x86/kvm/mmu/mmu.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 59c2a04f5648..8e85f672a08d 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -3156,6 +3156,9 @@ static bool kvm_mmu_prefetch_sptes(struct kvm_vcpu *vcpu, gfn_t gfn, u64 *sptep,
return false;

for (i = 0; i < nr_pages; i++, gfn++, sptep++) {
+ if (kvm_get_memory_attributes(vcpu->kvm, gfn))
+ continue;
+
mmu_set_spte(vcpu, slot, sptep, access, gfn,
page_to_pfn(pages[i]), NULL);

--
2.52.0