powerpc/powernv: Allow smt-enabled=off on Power9

Message ID 20190110115335.29463-1-mpe@ellerman.id.au
State New
Headers show
Series
  • powerpc/powernv: Allow smt-enabled=off on Power9
Related show

Checks

Context Check Description
snowpatch_ozlabs/checkpatch success total: 0 errors, 0 warnings, 0 checks, 17 lines checked
snowpatch_ozlabs/build-pmac32 success build succeeded & removed 0 sparse warning(s)
snowpatch_ozlabs/build-ppc64e success build succeeded & removed 0 sparse warning(s)
snowpatch_ozlabs/build-ppc64be success build succeeded & removed 0 sparse warning(s)
snowpatch_ozlabs/build-ppc64le success build succeeded & removed 0 sparse warning(s)
snowpatch_ozlabs/apply_patch success next/apply_patch Successfully applied

Commit Message

Michael Ellerman Jan. 10, 2019, 11:53 a.m.
In commit d70a54e2d085 ("powerpc/powernv: Ignore smt-enabled on Power8
and later") we disabled smt-enabled=off on Power8 and later CPUs
because the subcore logic required all CPUs to be booted.

However Power9 doesn't support subcore, so we can support
smt-enabled=off on Power9. Fix the code to do that.

Fixes: c3ab300ea555 ("powerpc: Add POWER9 cputable entry")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/platforms/powernv/smp.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Patch

diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
index 0d354e19ef92..3ab5755eb09f 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -254,12 +254,12 @@  static void pnv_smp_cpu_kill_self(void)
 static int pnv_cpu_bootable(unsigned int nr)
 {
 	/*
-	 * Starting with POWER8, the subcore logic relies on all threads of a
-	 * core being booted so that they can participate in split mode
-	 * switches. So on those machines we ignore the smt_enabled_at_boot
-	 * setting (smt-enabled on the kernel command line).
+	 * On POWER8 the subcore logic relies on all threads of a core being
+	 * booted so that they can participate in split mode switches. So on
+	 * those machines we ignore the smt_enabled_at_boot setting (smt-enabled
+	 * on the kernel command line).
 	 */
-	if (cpu_has_feature(CPU_FTR_ARCH_207S))
+	if (cpu_has_feature(CPU_FTR_ARCH_207S) && !cpu_has_feature(CPU_FTR_ARCH_300))
 		return 1;
 
 	return smp_generic_cpu_bootable(nr);