Re: [PATCH v8 00/14] Convert powerpc to default topdown mmap layout (v8)

From: Christophe Leroy
Date: Thu Mar 10 2022 - 01:51:28 EST


Hi Michael, hi Andrew

Le 09/03/2022 à 18:44, Christophe Leroy a écrit :
> Rebased on top of powerpc/next branch
>
> This series converts powerpc to default topdown mmap layout.
>
> powerpc requires its own arch_get_unmapped_area() only when
> slices are needed, which is only for book3s/64. First part of
> the series moves slices into book3s/64 specific directories
> and cleans up other subarchitectures.
>
> Last part converts to default topdown mmap layout.
>
> A small modification is done to core mm to allow
> powerpc to still provide its own arch_randomize_brk()
>
> Another modification is done to core mm to allow powerpc
> to use generic versions of get_unmapped_area functions for Radix
> while still providing its own implementation for Hash, the
> selection between Radix and Hash being doing at runtime.
>
> Last modification to core mm is to give len and flags to
> arch_get_mmap_end().
>
> Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>

What's the way forward for this series ?

Patches 1 has been merged in PCI tree.

Patches 2 to 5 are core mm, patch 5 being a fix.

Then patches 6 to 14 are powerpc.

What will be the merge strategy ? I guess it's a bit late to get it
through powerpc tree, so I was just wondering whether we could get
patches 2 to 5 in mm this cycle, and the powerpc ones next cycle ?

Thanks
Christophe

>
> Changes in v8:
> - Moved patch "sizes.h: Add SZ_1T macro" up from which is already in linux-next but not in Linus tree yet.
> - Rebased on today's powerpc/next
>
> Changes in v7:
> - Taken into account comments from Catalin (patches 3 and 4)
>
> Changes in v6:
> - New patch (patch 4) to take arch_get_mmap_base() and arch_get_mmap_end() into account in generic hugetlb_get_unmapped_area()
> - Get back arch_randomize_brk() simplification as it relies on default topdown mmap layout.
> - Fixed precedence between || and && in powerpc's arch_get_mmap_end() (patch 9)
>
> Changes in v5:
> - Added patch 3
> - Added arch_get_mmap_base() and arch_get_mmap_end() to patch 7 to better match original powerpc behaviour
> - Switched patched 10 and 11 and performed full randomisation in patch 10 just before switching to default implementation, as suggested by Nic.
>
> Changes in v4:
> - Move arch_randomize_brk() simplification out of this series
> - Add a change to core mm to enable using generic implementation
> while providing arch specific one at the same time.
> - Reworked radix get_unmapped_area to use generic implementation
> - Rebase on top of Nic's series v6
>
> Changes in v3:
> - Fixed missing <linux/elf-randomize.h> in last patch
> - Added a patch to move SZ_1T out of drivers/pci/controller/pci-xgene.c
>
> Changes in v2:
> - Moved patch 4 before patch 2
> - Make generic arch_randomize_brk() __weak
> - Added patch 9
>
> Christophe Leroy (14):
> sizes.h: Add SZ_1T macro
> mm: Allow arch specific arch_randomize_brk() with
> CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
> mm, hugetlbfs: Allow an arch to always use generic versions of
> get_unmapped_area functions
> mm: Add len and flags parameters to arch_get_mmap_end()
> mm, hugetlbfs: Allow for "high" userspace addresses
> powerpc/mm: Move vma_mmu_pagesize()
> powerpc/mm: Make slice specific to book3s/64
> powerpc/mm: Remove CONFIG_PPC_MM_SLICES
> powerpc/mm: Use generic_get_unmapped_area() and call it from
> arch_get_unmapped_area()
> powerpc/mm: Use generic_hugetlb_get_unmapped_area()
> powerpc/mm: Move get_unmapped_area functions to slice.c
> powerpc/mm: Enable full randomisation of memory mappings
> powerpc/mm: Convert to default topdown mmap layout
> powerpc: Simplify and move arch_randomize_brk()
>
> arch/arm64/include/asm/processor.h | 4 +-
> arch/powerpc/Kconfig | 2 +-
> arch/powerpc/include/asm/book3s/64/hugetlb.h | 4 -
> arch/powerpc/include/asm/book3s/64/mmu-hash.h | 1 +
> arch/powerpc/include/asm/book3s/64/mmu.h | 6 -
> arch/powerpc/include/asm/book3s/64/slice.h | 24 ++
> arch/powerpc/include/asm/hugetlb.h | 2 +-
> arch/powerpc/include/asm/paca.h | 7 -
> arch/powerpc/include/asm/page.h | 1 -
> arch/powerpc/include/asm/processor.h | 2 -
> arch/powerpc/include/asm/slice.h | 46 ----
> arch/powerpc/include/asm/task_size_64.h | 8 +
> arch/powerpc/kernel/paca.c | 5 -
> arch/powerpc/kernel/process.c | 41 ---
> arch/powerpc/mm/Makefile | 3 +-
> arch/powerpc/mm/book3s64/Makefile | 2 +-
> arch/powerpc/mm/book3s64/hash_utils.c | 33 ++-
> arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 55 ----
> arch/powerpc/mm/{ => book3s64}/slice.c | 71 ++++-
> arch/powerpc/mm/hugetlbpage.c | 34 ---
> arch/powerpc/mm/mmap.c | 256 ------------------
> arch/powerpc/mm/nohash/mmu_context.c | 9 -
> arch/powerpc/mm/nohash/tlb.c | 4 -
> arch/powerpc/platforms/Kconfig.cputype | 4 -
> drivers/pci/controller/pci-xgene.c | 1 -
> fs/hugetlbfs/inode.c | 26 +-
> include/linux/hugetlb.h | 5 +
> include/linux/sched/mm.h | 17 ++
> include/linux/sizes.h | 2 +
> mm/mmap.c | 43 +--
> mm/util.c | 2 +-
> 31 files changed, 185 insertions(+), 535 deletions(-)
> delete mode 100644 arch/powerpc/include/asm/slice.h
> rename arch/powerpc/mm/{ => book3s64}/slice.c (91%)
> delete mode 100644 arch/powerpc/mm/mmap.c
>