powerpc: Define config option for processors with broadcast TLBIE
authorPaul Mackerras <paulus@ozlabs.org>
Fri, 31 Jan 2025 06:29:17 +0000 (17:29 +1100)
committerMadhavan Srinivasan <maddy@linux.ibm.com>
Wed, 26 Feb 2025 15:46:48 +0000 (21:16 +0530)
Power ISA v3.0 (and later) implementations in the Linux Compliancy
Subset and lower are not required to implement broadcast TLBIE, and in
fact Microwatt doesn't.

To avoid the need to specify "disable_tlbie" on the kernel command
line on SMP Microwatt systems, this defines a config option that
asserts that the platform implements broadcast TLBIE.  This option is
selected by the pseries and powernv platforms, but not by microwatt.
Note that this option is only relevant when the radix MMU is being
used, so platforms without a radix MMU don't need it.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/Z5xtvdozEfEmRyeI@thinks.paulus.ozlabs.org
arch/powerpc/mm/book3s64/pgtable.c
arch/powerpc/platforms/Kconfig.cputype
arch/powerpc/platforms/powernv/Kconfig
arch/powerpc/platforms/pseries/Kconfig

index ce64abea9e3efef99022ce6db3a16d3e2d69915e..c0c45d033cba184c9e731bbd0a49af8b729b3858 100644 (file)
@@ -587,7 +587,7 @@ int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
 /*
  * Does the CPU support tlbie?
  */
-bool tlbie_capable __read_mostly = true;
+bool tlbie_capable __read_mostly = IS_ENABLED(CONFIG_PPC_RADIX_BROADCAST_TLBIE);
 EXPORT_SYMBOL(tlbie_capable);
 
 /*
@@ -595,7 +595,7 @@ EXPORT_SYMBOL(tlbie_capable);
  * address spaces? tlbie may still be used for nMMU accelerators, and for KVM
  * guest address spaces.
  */
-bool tlbie_enabled __read_mostly = true;
+bool tlbie_enabled __read_mostly = IS_ENABLED(CONFIG_PPC_RADIX_BROADCAST_TLBIE);
 
 static int __init setup_disable_tlbie(char *str)
 {
index 1453ccc900c434c8f0dc82aa0bf79a9363f385dc..613b383ed8b3f14d4d4f04e5c0dfc63aff5327f0 100644 (file)
@@ -449,6 +449,19 @@ config PPC_RADIX_MMU_DEFAULT
 
          If you're unsure, say Y.
 
+config PPC_RADIX_BROADCAST_TLBIE
+       bool
+       depends on PPC_RADIX_MMU
+       help
+         Power ISA v3.0 and later implementations in the Linux Compliancy Subset
+         and lower are not required to implement broadcast TLBIE instructions.
+         Platforms with CPUs that do implement TLBIE broadcast, that is, where
+         a TLB invalidation instruction performed on one CPU operates on the
+         TLBs of all CPUs in the system, should select this option.  If this
+         option is selected, the disable_tlbie kernel command line option can
+         be used to cause global TLB invalidations to be done via IPIs; without
+         it, IPIs will be used unconditionally.
+
 config PPC_KERNEL_PREFIXED
        depends on PPC_HAVE_PREFIXED_SUPPORT
        depends on CC_HAS_PREFIXED
index 70a46acc70d63d422d61039bd6f3d66ad6d65ed5..3fbe0295ce1418b8dc7f363798dad4d23ed7e85b 100644 (file)
@@ -17,6 +17,7 @@ config PPC_POWERNV
        select MMU_NOTIFIER
        select FORCE_SMP
        select ARCH_SUPPORTS_PER_VMA_LOCK
+       select PPC_RADIX_BROADCAST_TLBIE
        default y
 
 config OPAL_PRD
index b839e87408aa02cd2c1da0afafacb6a2292d7908..a934c2a262f66af6523d078914083ed0269b80a9 100644 (file)
@@ -23,6 +23,7 @@ config PPC_PSERIES
        select FORCE_SMP
        select SWIOTLB
        select ARCH_SUPPORTS_PER_VMA_LOCK
+       select PPC_RADIX_BROADCAST_TLBIE
        default y
 
 config PARAVIRT