Re: [PATCH v3 09/34] m68k: mm: Add p?d_large() definitions

From: Mike Rapoport
Date: Fri Mar 01 2019 - 06:46:22 EST


On Thu, Feb 28, 2019 at 12:04:08PM +0000, Steven Price wrote:
> On 28/02/2019 11:53, Geert Uytterhoeven wrote:
> > Hi Mike,
> >
> > On Thu, Feb 28, 2019 at 12:37 PM Mike Rapoport <rppt@xxxxxxxxxxxxx> wrote:
> >> On Wed, Feb 27, 2019 at 08:27:40PM +0100, Geert Uytterhoeven wrote:
> >>> On Wed, Feb 27, 2019 at 6:07 PM Steven Price <steven.price@xxxxxxx> wrote:
> >>>> walk_page_range() is going to be allowed to walk page tables other than
> >>>> those of user space. For this it needs to know when it has reached a
> >>>> 'leaf' entry in the page tables. This information is provided by the
> >>>> p?d_large() functions/macros.
> >>>>
> >>>> For m68k, we don't support large pages, so add stubs returning 0
> >>>>
> >>>> CC: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> >>>> CC: linux-m68k@xxxxxxxxxxxxxxxxxxxx
> >>>> Signed-off-by: Steven Price <steven.price@xxxxxxx>
> >>>
> >>> Thanks for your patch!
> >>>
> >>>> arch/m68k/include/asm/mcf_pgtable.h | 2 ++
> >>>> arch/m68k/include/asm/motorola_pgtable.h | 2 ++
> >>>> arch/m68k/include/asm/pgtable_no.h | 1 +
> >>>> arch/m68k/include/asm/sun3_pgtable.h | 2 ++
> >>>> 4 files changed, 7 insertions(+)
> >>>
> >> Maybe I'm missing something, but why the stubs have to be defined in
> >> arch/*/include/asm/pgtable.h rather than in include/asm-generic/pgtable.h?
> >
> > That would even make more sense, given most architectures don't
> > support huge pages.
>
> Where the architecture has folded a level stubs are provided by the
> asm-generic layer, see this later patch:
>
> https://lore.kernel.org/lkml/20190227170608.27963-25-steven.price@xxxxxxx/
>
> However just because an architecture port doesn't (currently) support
> huge pages doesn't mean that the architecture itself can't have large[1]
> mappings at higher levels of the page table. For instance an
> architecture might use large pages for the linear map but not support
> huge page mappings for user space.

Well, I doubt m68k can support large mappings at higher levels at all.
This, IMHO, applies to many other architectures and spreading p?d_large all
over those architecture seems wrong to me...

> My previous posting of this series attempted to define generic versions
> of p?d_large(), but it was pointed out to me that this was fragile and
> having a way of knowing whether the page table was a 'leaf' is actually
> useful, so I've attempted to implement for all architectures. See the
> discussion here:
> https://lore.kernel.org/lkml/20190221113502.54153-1-steven.price@xxxxxxx/T/#mf0bd0155f185a19681b48a288be212ed1596e85d

I'll reply on that thread, somehow I missed it then.

> Steve
>

--
Sincerely yours,
Mike.