Re: [PATCH] x86/mm: Define the zapped-entry checks only with CONFIG_DEBUG_VM

From: Edgecombe, Rick P

Date: Mon Nov 02 2026 - 15:38:35 EST


On Mon, 2026-11-02 at 17:32 +0000, Kiryl Shutsemau wrote:
> On Mon, Nov 02, 2026 at 04:53:17PM +0000, Edgecombe, Rick P wrote:
> > Do you happen to know if this performance impact is relevant at all in the
> > non Safe RET case?
>
> Yes, both sides of the comparison are the same kernel with Safe RET on,
> with and without the patch.
>
> Without Safe RET (spec_rstack_overflow=off, same two kernels) the call
> and return predict fine: branch misses are the same with and without the
> patch, and the gain is under 2%, within noise.

Hmm, I'd wonder if the fixes tag is appropriate then. Should it be the safe ret
commits?

>
> > > diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
> > > index 4a105f283cfb..3352bc6904f3 100644
> > > --- a/arch/x86/mm/pgtable.c
> > > +++ b/arch/x86/mm/pgtable.c
> > > @@ -798,6 +798,7 @@ pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct
> > > *vma)
> > >   return pmd_clear_saveddirty(pmd);
> > >  }
> > >  
> > > +#ifdef CONFIG_DEBUG_VM
> > >  void arch_check_zapped_pte(struct vm_area_struct *vma, pte_t pte)
> > >  {
> > >   /*
> > > @@ -823,3 +824,4 @@ void arch_check_zapped_pud(struct vm_area_struct *vma,
> > > pud_t pud)
> > >   /* See note in arch_check_zapped_pte() */
> > >   VM_WARN_ON_ONCE(!(vma->vm_flags & VM_SHADOW_STACK) &&
> > > pud_shstk(pud));
> >
> > I guess all of these don't need to be the "VM_WARN_" varieties if they are
> > compiled out in the other case.
>
> I can do either way. It is functionally equivalent.

Otherwise it's effectively a duplicate check.