[PATCH v8 4/6] powerpc/tlb: Add local flush for page given mm_struct and psize

Benjamin Gray bgray at linux.ibm.com
Mon Oct 24 16:22:01 AEDT 2022


On Mon, 2022-10-24 at 14:30 +1100, Russell Currey wrote:
> On Fri, 2022-10-21 at 16:22 +1100, Benjamin Gray wrote:
> > Adds a local TLB flush operation that works given an mm_struct, VA
> > to
> > flush, and page size representation.
> > 
> > This removes the need to create a vm_area_struct, which the
> > temporary
> > patching mm work does not need.
> > 
> > Signed-off-by: Benjamin Gray <bgray at linux.ibm.com>
> > ---
> >  arch/powerpc/include/asm/book3s/32/tlbflush.h      | 9 +++++++++
> >  arch/powerpc/include/asm/book3s/64/tlbflush-hash.h | 5 +++++
> >  arch/powerpc/include/asm/book3s/64/tlbflush.h      | 8 ++++++++
> >  arch/powerpc/include/asm/nohash/tlbflush.h         | 1 +
> >  4 files changed, 23 insertions(+)
> > 
> > diff --git a/arch/powerpc/include/asm/book3s/32/tlbflush.h
> > b/arch/powerpc/include/asm/book3s/32/tlbflush.h
> > index ba1743c52b56..e5a688cebf69 100644
> > --- a/arch/powerpc/include/asm/book3s/32/tlbflush.h
> > +++ b/arch/powerpc/include/asm/book3s/32/tlbflush.h
> > @@ -2,6 +2,8 @@
> >  #ifndef _ASM_POWERPC_BOOK3S_32_TLBFLUSH_H
> >  #define _ASM_POWERPC_BOOK3S_32_TLBFLUSH_H
> >  
> > +#include <linux/build_bug.h>
> > +
> >  #define MMU_NO_CONTEXT      (0)
> >  /*
> >   * TLB flushing for "classic" hash-MMU 32-bit CPUs, 6xx, 7xx, 7xxx
> > @@ -74,6 +76,13 @@ static inline void local_flush_tlb_page(struct
> > vm_area_struct *vma,
> >  {
> >         flush_tlb_page(vma, vmaddr);
> >  }
> > +
> > +static inline void local_flush_tlb_page_psize(struct mm_struct
> > *mm,
> > unsigned long vmaddr, int psize)
> > +{
> > +       BUILD_BUG_ON(psize != MMU_PAGE_4K);
> 
> Is there any utility in adding this for 32bit if the following
> patches
> are only for Radix?

It needs some kind of definition to avoid #ifdef's. I figured I may as
well provide a correct implementation, given the functions around it
are implemented. The BUILD_BUG_ON specifically is just defensive in
case my assumptions are wrong. I don't know anything about these
machines, just what the kernel defines. I can remove the check, or
replace the whole implementation with a BUILD_BUG?


More information about the Linuxppc-dev mailing list