[Acked] [PATCH] powerpc/powernv: Ignore smt-enabled on Power8 and later
Andy Whitcroft
apw at canonical.com
Tue Feb 24 10:33:41 UTC 2015
On Tue, Feb 24, 2015 at 06:19:20PM +1100, Michael Ellerman wrote:
> From: Greg Kurz <gkurz at linux.vnet.ibm.com>
>
> Commit d70a54e2d08510a99b1f10eceeae6f2f7086e226 upstream.
>
> 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).
>
> Signed-off-by: Greg Kurz <gkurz at linux.vnet.ibm.com>
> [mpe: Update comment and change log to be more precise]
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
> ---
> arch/powerpc/platforms/powernv/smp.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
>
> Hi Ubuntu kernel folks,
>
> This patch isn't quite upstream stable material, but might still be nice to
> have. It prevents smt-enabled=off on the kernel command line causing a hung
> system at boot.
>
> cheers
>
> diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
> index 6c551a28e899..fc34025ef822 100644
> --- a/arch/powerpc/platforms/powernv/smp.c
> +++ b/arch/powerpc/platforms/powernv/smp.c
> @@ -209,13 +209,27 @@ static void pnv_smp_cpu_kill_self(void)
>
> #endif /* CONFIG_HOTPLUG_CPU */
>
> +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).
> + */
> + if (cpu_has_feature(CPU_FTR_ARCH_207S))
> + return 1;
> +
> + return smp_generic_cpu_bootable(nr);
> +}
> +
> static struct smp_ops_t pnv_smp_ops = {
> .message_pass = smp_muxed_ipi_message_pass,
> .cause_ipi = NULL, /* Filled at runtime by xics_smp_probe() */
> .probe = xics_smp_probe,
> .kick_cpu = pnv_smp_kick_cpu,
> .setup_cpu = pnv_smp_setup_cpu,
> - .cpu_bootable = smp_generic_cpu_bootable,
> + .cpu_bootable = pnv_cpu_bootable,
> #ifdef CONFIG_HOTPLUG_CPU
> .cpu_disable = pnv_smp_cpu_disable,
> .cpu_die = generic_cpu_die,
> --
Looks simple and to do what is claimed.
Acked-by: Andy Whitcroft <apw at canonical.com>
-apw
More information about the kernel-team
mailing list