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