Excerpts from Nicholas Piggin's message of October 22, 2021 7:34 pm: > Excerpts from Christophe Leroy's message of October 22, 2021 5:18 pm: >> >> >> Le 22/10/2021 à 00:30, Nicholas Piggin a écrit : >>> Compiling out hash support code when CONFIG_PPC_64S_HASH_MMU=n saves >>> 128kB kernel image size (90kB text) on powernv_defconfig minus KVM, >>> 350kB on pseries_defconfig minus KVM, 40kB on a tiny config. >>> >>> Signed-off-by: Nicholas Piggin <npig...@gmail.com> >>> --- >>> arch/powerpc/Kconfig | 2 +- >>> arch/powerpc/include/asm/book3s/64/mmu.h | 19 +++++++++-- >>> .../include/asm/book3s/64/tlbflush-hash.h | 7 ++++ >>> arch/powerpc/include/asm/book3s/pgtable.h | 4 +++ >>> arch/powerpc/include/asm/mmu_context.h | 2 ++ >>> arch/powerpc/include/asm/paca.h | 8 +++++ >>> arch/powerpc/kernel/asm-offsets.c | 2 ++ >>> arch/powerpc/kernel/entry_64.S | 4 +-- >>> arch/powerpc/kernel/exceptions-64s.S | 16 +++++++++ >>> arch/powerpc/kernel/mce.c | 2 +- >>> arch/powerpc/kernel/mce_power.c | 10 ++++-- >>> arch/powerpc/kernel/paca.c | 18 ++++------ >>> arch/powerpc/kernel/process.c | 13 +++---- >>> arch/powerpc/kernel/prom.c | 2 ++ >>> arch/powerpc/kernel/setup_64.c | 5 +++ >>> arch/powerpc/kexec/core_64.c | 4 +-- >>> arch/powerpc/kexec/ranges.c | 4 +++ >>> arch/powerpc/mm/book3s64/Makefile | 15 ++++---- >>> arch/powerpc/mm/book3s64/hugetlbpage.c | 2 ++ >>> arch/powerpc/mm/book3s64/mmu_context.c | 34 +++++++++++++++---- >>> arch/powerpc/mm/book3s64/pgtable.c | 2 +- >>> arch/powerpc/mm/book3s64/radix_pgtable.c | 4 +++ >>> arch/powerpc/mm/copro_fault.c | 2 ++ >>> arch/powerpc/mm/ptdump/Makefile | 2 +- >>> arch/powerpc/platforms/powernv/idle.c | 2 ++ >>> arch/powerpc/platforms/powernv/setup.c | 2 ++ >>> arch/powerpc/platforms/pseries/lpar.c | 11 ++++-- >>> arch/powerpc/platforms/pseries/lparcfg.c | 2 +- >>> arch/powerpc/platforms/pseries/mobility.c | 6 ++++ >>> arch/powerpc/platforms/pseries/ras.c | 2 ++ >>> arch/powerpc/platforms/pseries/reconfig.c | 2 ++ >>> arch/powerpc/platforms/pseries/setup.c | 6 ++-- >>> arch/powerpc/xmon/xmon.c | 8 +++-- >>> drivers/misc/lkdtm/Makefile | 2 +- >>> drivers/misc/lkdtm/core.c | 2 +- >>> 35 files changed, 177 insertions(+), 51 deletions(-) >>> >> >>> diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h >>> b/arch/powerpc/include/asm/book3s/64/mmu.h >>> index c02f42d1031e..d94ebae386b6 100644 >>> --- a/arch/powerpc/include/asm/book3s/64/mmu.h >>> +++ b/arch/powerpc/include/asm/book3s/64/mmu.h >>> @@ -233,7 +245,8 @@ static inline void >>> setup_initial_memory_limit(phys_addr_t first_memblock_base, >>> * know which translations we will pick. Hence go with hash >>> * restrictions. >>> */ >>> - return hash__setup_initial_memory_limit(first_memblock_base, >>> + if (!radix_enabled()) >>> + return hash__setup_initial_memory_limit(first_memblock_base, >>> first_memblock_size); >> >> It is a void function, using return is not correct. > > I guess for this case I can fix as I go. > >>> @@ -112,8 +112,15 @@ static inline void >>> hash__flush_tlb_kernel_range(unsigned long start, >>> >>> struct mmu_gather; >>> extern void hash__tlb_flush(struct mmu_gather *tlb); >>> +extern void flush_tlb_pmd_range(struct mm_struct *mm, pmd_t *pmd, >>> + unsigned long addr); >> >> 'extern' is superflous > > Ditto. > >>> @@ -144,12 +147,21 @@ static int hash__init_new_context(struct mm_struct >>> *mm) >>> return index; >>> } >>> >>> +void slb_setup_new_exec(void); >> >> Include arch/powerpc/mm/book3s64/internal.h instead > > Will do. > >>> diff --git a/arch/powerpc/mm/book3s64/pgtable.c >>> b/arch/powerpc/mm/book3s64/pgtable.c >>> index 7d556b5513e4..57d2d797c4f6 100644 >>> --- a/arch/powerpc/mm/book3s64/pgtable.c >>> +++ b/arch/powerpc/mm/book3s64/pgtable.c >>> @@ -535,7 +535,7 @@ static int __init pgtable_debugfs_setup(void) >>> } >>> arch_initcall(pgtable_debugfs_setup); >>> >>> -#ifdef CONFIG_ZONE_DEVICE >>> +#if defined(CONFIG_ZONE_DEVICE) && defined(ARCH_HAS_MEMREMAP_COMPAT_ALIGN) >> >> Patch 12 does >> >> select ARCH_HAS_MEMREMAP_COMPAT_ALIGN if PPC_BOOK3S_64 > > Ah, I meant to change that to PPC_64S_HASH_MMU.
Oh I did in this patch, I was looking at the wrong commit. Thanks, Nick