Commit 3d45a3d0 authored by Paul Mackerras's avatar Paul Mackerras Committed by Madhavan Srinivasan
Browse files

powerpc: Define config option for processors with broadcast TLBIE



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: default avatarPaul Mackerras <paulus@ozlabs.org>
Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/Z5xtvdozEfEmRyeI@thinks.paulus.ozlabs.org
parent 2b0a438d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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)
{
+13 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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