Skip to content

Commit

Permalink
powerpc: Define config option for processors with broadcast TLBIE
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Paul Mackerras authored and Madhavan Srinivasan committed Feb 26, 2025
1 parent 2b0a438 commit 3d45a3d
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 2 deletions.
4 changes: 2 additions & 2 deletions arch/powerpc/mm/book3s64/pgtable.c
Original file line number Diff line number Diff line change
Expand Up @@ -587,15 +587,15 @@ 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);

/*
* Should tlbie be used for management of CPU TLBs, for kernel and process
* 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)
{
Expand Down
13 changes: 13 additions & 0 deletions arch/powerpc/platforms/Kconfig.cputype
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/powernv/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/pseries/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 3d45a3d

Please sign in to comment.