[PATCH v3 15/18] powerpc/64s: Make hash MMU support configurable

Christophe Leroy christophe.leroy at csgroup.eu
Fri Oct 22 18:02:54 AEDT 2021



Le 22/10/2021 à 00:30, Nicholas Piggin a écrit :
> This adds Kconfig selection which allows 64s hash MMU support to be
> disabled. It can be disabled if radix support is enabled, the minimum
> supported CPU type is POWER9 (or higher), and KVM is not selected.
> 
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
>   arch/powerpc/Kconfig                     |  3 ++-
>   arch/powerpc/include/asm/mmu.h           | 16 ++++++++++---
>   arch/powerpc/kernel/dt_cpu_ftrs.c        | 14 ++++++++----
>   arch/powerpc/kvm/Kconfig                 |  1 +
>   arch/powerpc/mm/init_64.c                | 15 +++++++++---
>   arch/powerpc/platforms/Kconfig.cputype   | 29 ++++++++++++++++++++++--
>   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 +-
>   12 files changed, 71 insertions(+), 15 deletions(-)
> 

> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
> index a208997ade88..1cf254a5d5d4 100644
> --- a/arch/powerpc/platforms/Kconfig.cputype
> +++ b/arch/powerpc/platforms/Kconfig.cputype

> @@ -364,6 +371,17 @@ config SPE
>   
>   	  If in doubt, say Y here.
>   
> +config PPC_64S_HASH_MMU
> +	bool "Hash MMU Support"
> +	depends on PPC_BOOK3S_64
> +	select PPC_MM_SLICES
> +	default y
> +	help
> +	  Enable support for the Power ISA Hash style MMU. This is implemented
> +	  by all IBM Power and other Book3S CPUs.
> +
> +	  If you're unsure, say Y.
> +
>   config PPC_RADIX_MMU
>   	bool "Radix MMU Support"
>   	depends on PPC_BOOK3S_64
> @@ -374,9 +392,10 @@ config PPC_RADIX_MMU
>   	  is only implemented by IBM Power9 CPUs, if you don't have one of them
>   	  you can probably disable this.
>   
> -config PPC_RADIX_MMU_DEFAULT
> +config PPC_RADIX_MMU_DEFAULT_OPTION
>   	bool "Default to using the Radix MMU when possible"
>   	depends on PPC_RADIX_MMU
> +	depends on PPC_64S_HASH_MMU
>   	default y
>   	help
>   	  When the hardware supports the Radix MMU, default to using it unless
> @@ -387,6 +406,12 @@ config PPC_RADIX_MMU_DEFAULT
>   
>   	  If you're unsure, say Y.
>   
> +config PPC_RADIX_MMU_DEFAULT
> +	bool
> +	depends on PPC_BOOK3S_64
> +	depends on PPC_RADIX_MMU_DEFAULT_OPTION || !PPC_64S_HASH_MMU
> +	default y
> +

Why do you need that PPC_RADIX_MMU_DEFAULT_OPTION ?

What about

	config PPC_RADIX_MMU_DEFAULT
		bool "Default to using the Radix MMU when possible" if PPC_64S_HASH_MMU
		depends on PPC_RADIX_MMU
		depends on PPC_BOOK3S_64
		default y

>   config PPC_HAVE_KUEP
>   	bool
>   
> diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
> index db4465c51b56..faa894714a2a 100644
> --- a/arch/powerpc/platforms/cell/Kconfig
> +++ b/arch/powerpc/platforms/cell/Kconfig
> @@ -8,6 +8,7 @@ config PPC_CELL_COMMON
>   	select PPC_DCR_MMIO
>   	select PPC_INDIRECT_PIO
>   	select PPC_INDIRECT_MMIO
> +	select PPC_64S_HASH_MMU

Is this one (and the others) needed ?

Because it PPC_64S_HASH_MMU is 'default y', selection shouldn't be 
needed I think.

Did you check with savedefconfig ?


>   	select PPC_HASH_MMU_NATIVE
>   	select PPC_RTAS
>   	select IRQ_EDGE_EOI_HANDLER
> diff --git a/arch/powerpc/platforms/maple/Kconfig b/arch/powerpc/platforms/maple/Kconfig
> index 7fd84311ade5..4c058cc57c90 100644
> --- a/arch/powerpc/platforms/maple/Kconfig
> +++ b/arch/powerpc/platforms/maple/Kconfig
> @@ -9,6 +9,7 @@ config PPC_MAPLE
>   	select GENERIC_TBSYNC
>   	select PPC_UDBG_16550
>   	select PPC_970_NAP
> +	select PPC_64S_HASH_MMU
>   	select PPC_HASH_MMU_NATIVE
>   	select PPC_RTAS
>   	select MMIO_NVRAM
> diff --git a/arch/powerpc/platforms/microwatt/Kconfig b/arch/powerpc/platforms/microwatt/Kconfig
> index 62b51e37fc05..823192e9d38a 100644
> --- a/arch/powerpc/platforms/microwatt/Kconfig
> +++ b/arch/powerpc/platforms/microwatt/Kconfig
> @@ -5,7 +5,7 @@ config PPC_MICROWATT
>   	select PPC_XICS
>   	select PPC_ICS_NATIVE
>   	select PPC_ICP_NATIVE
> -	select PPC_HASH_MMU_NATIVE
> +	select PPC_HASH_MMU_NATIVE if PPC_64S_HASH_MMU
>   	select PPC_UDBG_16550
>   	select ARCH_RANDOM
>   	help
> diff --git a/arch/powerpc/platforms/pasemi/Kconfig b/arch/powerpc/platforms/pasemi/Kconfig
> index bc7137353a7f..85ae18ddd911 100644
> --- a/arch/powerpc/platforms/pasemi/Kconfig
> +++ b/arch/powerpc/platforms/pasemi/Kconfig
> @@ -5,6 +5,7 @@ config PPC_PASEMI
>   	select MPIC
>   	select FORCE_PCI
>   	select PPC_UDBG_16550
> +	select PPC_64S_HASH_MMU
>   	select PPC_HASH_MMU_NATIVE
>   	select MPIC_BROKEN_REGREAD
>   	help
> diff --git a/arch/powerpc/platforms/powermac/Kconfig b/arch/powerpc/platforms/powermac/Kconfig
> index 2b56df145b82..130707ec9f99 100644
> --- a/arch/powerpc/platforms/powermac/Kconfig
> +++ b/arch/powerpc/platforms/powermac/Kconfig
> @@ -6,6 +6,7 @@ config PPC_PMAC
>   	select FORCE_PCI
>   	select PPC_INDIRECT_PCI if PPC32
>   	select PPC_MPC106 if PPC32
> +	select PPC_64S_HASH_MMU if PPC64
>   	select PPC_HASH_MMU_NATIVE
>   	select ZONE_DMA if PPC32
>   	default y
> diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig
> index cd754e116184..161dfe024085 100644
> --- a/arch/powerpc/platforms/powernv/Kconfig
> +++ b/arch/powerpc/platforms/powernv/Kconfig
> @@ -2,7 +2,7 @@
>   config PPC_POWERNV
>   	depends on PPC64 && PPC_BOOK3S
>   	bool "IBM PowerNV (Non-Virtualized) platform support"
> -	select PPC_HASH_MMU_NATIVE
> +	select PPC_HASH_MMU_NATIVE if PPC_64S_HASH_MMU
>   	select PPC_XICS
>   	select PPC_ICP_NATIVE
>   	select PPC_XIVE_NATIVE
> 


More information about the Linuxppc-dev mailing list