Re: [PATCH 10/28] KVM: x86/mmu: pass PFERR_GUEST_PAGE/FINAL_MASK to kvm_translate_gpa

Paolo Bonzini
2026-05-01T03:52:33Z

On Thu, Apr 30, 2026 at 8:51 PM Sean Christopherson <seanjc@google.com> wrote:
>
> +Kevin and Yosry
>
> On Thu, Apr 30, 2026, Paolo Bonzini wrote:
> > static bool mmio_info_in_cache(struct kvm_vcpu *vcpu, u64 addr, bool direct)
> > diff --git a/arch/x86/kvm/mmu/paging_tmpl.h b/arch/x86/kvm/mmu/paging_tmpl.h
> > index fb1b5d8b23e5..567f8b77ffe0 100644
> > --- a/arch/x86/kvm/mmu/paging_tmpl.h
> > +++ b/arch/x86/kvm/mmu/paging_tmpl.h
> > @@ -376,7 +376,8 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
> > walker->pte_gpa[walker->level - 1] = pte_gpa;
> >
> > real_gpa = kvm_translate_gpa(vcpu, mmu, gfn_to_gpa(table_gfn),
> > - nested_access, &walker->fault);
> > + nested_access | PFERR_GUEST_PAGE_MASK,
> > + &walker->fault);
> >
> > /*
> > * FIXME: This can happen if emulation (for of an INS/OUTS
> > @@ -444,7 +445,9 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
> > gfn += pse36_gfn_delta(pte);
> > #endif
> >
> > - real_gpa = kvm_translate_gpa(vcpu, mmu, gfn_to_gpa(gfn), access, &walker->fault);
> > + real_gpa = kvm_translate_gpa(vcpu, mmu, gfn_to_gpa(gfn),
> > + access | PFERR_GUEST_FINAL_MASK,
> > + &walker->fault);
>
> Mostly a note to myself, we should make sure to land Kevin's fixes for synthesizing
> the #NPF error code and EPT exit qualification in the same kernel (which I fully
> plan on doing). I'm just happy we all came up with the same annotations :-)

Yes, passing down the exit qualification was yucky. I'll check what
needs to be done in Kevin's patches to support advanced EPT violation
info.

Paolo

>
> https://lore.kernel.org/all/20260313071033.4153209-3-chengkev@google.com
>