[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