[PATCH v2 0/5] Implement huge VMAP and VMALLOC on powerpc 8xx

From: Christophe Leroy
Date: Wed May 12 2021 - 01:01:05 EST


This series implements huge VMAP and VMALLOC on powerpc 8xx.

Powerpc 8xx has 4 page sizes:
- 4k
- 16k
- 512k
- 8M

At the time being, vmalloc and vmap only support huge pages which are
leaf at PMD level.

Here the PMD level is 4M, it doesn't correspond to any supported
page size.

For now, implement use of 16k and 512k pages which is done
at PTE level.

Support of 8M pages will be implemented later, it requires use of
hugepd tables.

To allow this, the architecture provides two functions:
- arch_vmap_pte_range_map_size() which tells vmap_pte_range() what
page size to use. A stub returning PAGE_SIZE is provided when the
architecture doesn't provide this function.
- arch_vmap_pte_supported_shift() which tells __vmalloc_node_range()
what page shift to use for a given area size. A stub returning
PAGE_SHIFT is provided when the architecture doesn't provide this
function.

The main change in v2 compared to the RFC is that powerpc 8xx
specificities are not plugged anymore directly inside vmalloc code.

Christophe Leroy (5):
mm/hugetlb: Change parameters of arch_make_huge_pte()
mm/pgtable: Add stubs for {pmd/pub}_{set/clear}_huge
mm/vmalloc: Enable mapping of huge pages at pte level in vmap
mm/vmalloc: Enable mapping of huge pages at pte level in vmalloc
powerpc/8xx: Add support for huge pages on VMAP and VMALLOC

arch/arm64/include/asm/hugetlb.h | 3 +-
arch/arm64/mm/hugetlbpage.c | 5 +--
arch/powerpc/Kconfig | 2 +-
.../include/asm/nohash/32/hugetlb-8xx.h | 5 +--
arch/powerpc/include/asm/nohash/32/mmu-8xx.h | 43 +++++++++++++++++++
arch/sparc/include/asm/pgtable_64.h | 3 +-
arch/sparc/mm/hugetlbpage.c | 6 +--
include/linux/hugetlb.h | 4 +-
include/linux/pgtable.h | 26 ++++++++++-
include/linux/vmalloc.h | 15 +++++++
mm/hugetlb.c | 6 ++-
mm/migrate.c | 4 +-
mm/vmalloc.c | 34 +++++++++++----
13 files changed, 126 insertions(+), 30 deletions(-)

--
2.25.0