Thread (17 messages) flat view 17 messages, 3 authors, 2021-08-30

Re: [RFC PATCH 4/6] powerpc/64s: Make hash MMU code build configurable

From: Christophe Leroy <hidden>
Date: 2021-08-28 10:00:27


Le 27/08/2021 à 18:34, Nicholas Piggin a écrit :
Introduce a new option CONFIG_PPC_64S_HASH_MMU which allows the 64s hash
MMU code to be compiled out if radix is selected and the minimum
supported CPU type is POWER9 or higher, and KVM is not selected.

This 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@gmail.com>
---
  arch/powerpc/Kconfig                          |  1 +
  arch/powerpc/include/asm/book3s/64/mmu.h      | 22 +++++-
  .../include/asm/book3s/64/tlbflush-hash.h     |  7 ++
  arch/powerpc/include/asm/book3s/pgtable.h     |  4 ++
  arch/powerpc/include/asm/mmu.h                | 38 +++++++++--
  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/dt_cpu_ftrs.c             | 10 ++-
  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                |  4 ++
  arch/powerpc/kexec/core_64.c                  |  4 +-
  arch/powerpc/kexec/ranges.c                   |  4 ++
  arch/powerpc/kvm/Kconfig                      |  1 +
  arch/powerpc/mm/book3s64/Makefile             | 17 +++--
  arch/powerpc/mm/book3s64/hash_pgtable.c       |  1 -
  arch/powerpc/mm/book3s64/hash_utils.c         | 10 ---
  .../{hash_hugetlbpage.c => hugetlbpage.c}     |  6 ++
  arch/powerpc/mm/book3s64/mmu_context.c        | 16 +++++
  arch/powerpc/mm/book3s64/pgtable.c            | 22 +++++-
  arch/powerpc/mm/book3s64/radix_pgtable.c      |  4 ++
  arch/powerpc/mm/book3s64/slb.c                | 16 -----
  arch/powerpc/mm/copro_fault.c                 |  2 +
  arch/powerpc/mm/fault.c                       | 17 +++++
  arch/powerpc/mm/pgtable.c                     | 10 ++-
  arch/powerpc/platforms/Kconfig.cputype        | 20 +++++-
  arch/powerpc/platforms/cell/Kconfig           |  1 +
  arch/powerpc/platforms/maple/Kconfig          |  1 +
  arch/powerpc/platforms/microwatt/Kconfig      |  2 +-
  arch/powerpc/platforms/pasemi/Kconfig         |  1 +
  arch/powerpc/platforms/powermac/Kconfig       |  1 +
  arch/powerpc/platforms/powernv/Kconfig        |  2 +-
  arch/powerpc/platforms/powernv/idle.c         |  2 +
  arch/powerpc/platforms/powernv/setup.c        |  2 +
  arch/powerpc/platforms/pseries/lpar.c         | 68 ++++++++++---------
  arch/powerpc/platforms/pseries/lparcfg.c      |  2 +-
  arch/powerpc/platforms/pseries/mobility.c     |  6 ++
  arch/powerpc/platforms/pseries/ras.c          |  4 ++
  arch/powerpc/platforms/pseries/reconfig.c     |  2 +
  arch/powerpc/platforms/pseries/setup.c        |  6 +-
  arch/powerpc/xmon/xmon.c                      |  8 ++-
  47 files changed, 310 insertions(+), 111 deletions(-)
  rename arch/powerpc/mm/book3s64/{hash_hugetlbpage.c => hugetlbpage.c} (95%)
Whaou ! Huge patch.

Several places you should be able to use IS_ENABLED() or simply radix_enabled() instead of #ifdefs 
and rely on GCC to opt out stuff when radix_enabled() folds into 'true'.

I may do more detailed comments later when I have time.

Christophe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help