[PATCH v3 16/18] powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU
Nicholas Piggin
npiggin at gmail.com
Fri Oct 22 20:44:35 AEDT 2021
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 <npiggin at 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
More information about the Linuxppc-dev
mailing list