sparc32: mm: Restructure sparc32 MMU page-table layout
authorWill Deacon <will@kernel.org>
Tue, 14 Apr 2020 21:40:09 +0000 (22:40 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 May 2020 22:32:00 +0000 (15:32 -0700)
commit8e958839e4b9fb6ea4385ff2c52d1333a3a618de
tree487521d3d5161f12c348a62d97b35201e0131f28
parented894bf5a76357eb92045c79d6ae2f29814c6183
sparc32: mm: Restructure sparc32 MMU page-table layout

The "SRMMU" supports 4k pages using a fixed three-level walk with a
256-entry PGD and 64-entry PMD/PTE levels. In order to fill a page
with a 'pgtable_t', the SRMMU code allocates four native PTE tables
into a single PTE allocation and similarly for the PMD level, leading
to an array of 16 physical pointers in a 'pmd_t'

This breaks the generic code which assumes READ_ONCE(*pmd) will be
word sized.

In a manner similar to ef22d8abd876 ("m68k: mm: Restructure Motorola
MMU page-table layout"), this patch implements the native page-table
setup directly. This significantly increases the page-table memory
overhead, but will be addresses in a subsequent patch.

Cc: "David S. Miller" <davem@davemloft.net>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/include/asm/page_32.h
arch/sparc/include/asm/pgalloc_32.h
arch/sparc/include/asm/pgtable_32.h
arch/sparc/include/asm/pgtsrmmu.h
arch/sparc/include/asm/viking.h
arch/sparc/kernel/head_32.S
arch/sparc/mm/hypersparc.S
arch/sparc/mm/srmmu.c
arch/sparc/mm/viking.S