[3.11.y.z extended stable] Patch "powerpc: Don't setup CPUs with bad status" has been added to staging queue

Michael Neuling mikey at neuling.org
Thu Jun 26 14:14:25 UTC 2014


Luis,

We should also include this patch that just went upstream:

  commit 6663a4fa6711050036562ddfd2086edf735fae21
  Author: Scott Wood <scottwood at freescale.com>
  powerpc: Don't skip ePAPR spin-table CPUs

This fixes this an issue with this patch on embedded powerpc
processors.  

Mikey

On Thu, 2014-06-26 at 11:37 +0100, Luis Henriques wrote:
> This is a note to let you know that I have just added a patch titled
> 
>     powerpc: Don't setup CPUs with bad status
> 
> to the linux-3.11.y-queue branch of the 3.11.y.z extended stable tree 
> which can be found at:
> 
>  http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.11.y-queue
> 
> If you, or anyone else, feels it should not be added to this tree, please 
> reply to this email.
> 
> For more information about the 3.11.y.z tree, see
> https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
> 
> Thanks.
> -Luis
> 
> ------
> 
> >From 29dbefe0b5e5e631fdd0b30d608cb467bfcf094a Mon Sep 17 00:00:00 2001
> From: Michael Neuling <mikey at neuling.org>
> Date: Fri, 6 Jun 2014 14:28:51 +1000
> Subject: powerpc: Don't setup CPUs with bad status
> 
> commit 59a53afe70fd530040bdc69581f03d880157f15a upstream.
> 
> OPAL will mark a CPU that is guarded as "bad" in the status property of the CPU
> node.
> 
> Unfortunatley Linux doesn't check this property and will put the bad CPU in the
> present map.  This has caused hangs on booting when we try to unsplit the core.
> 
> This patch checks the CPU is avaliable via this status property before putting
> it in the present map.
> 
> Signed-off-by: Michael Neuling <mikey at neuling.org>
> Tested-by: Anton Blanchard <anton at samba.org>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
> ---
>  arch/powerpc/kernel/setup-common.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
> index ee0e0553ae0e..b12be98e0972 100644
> --- a/arch/powerpc/kernel/setup-common.c
> +++ b/arch/powerpc/kernel/setup-common.c
> @@ -457,7 +457,7 @@ void __init smp_setup_cpu_maps(void)
>  		for (j = 0; j < nthreads && cpu < nr_cpu_ids; j++) {
>  			DBG("    thread %d -> cpu %d (hard id %d)\n",
>  			    j, cpu, be32_to_cpu(intserv[j]));
> -			set_cpu_present(cpu, true);
> +			set_cpu_present(cpu, of_device_is_available(dn));
>  			set_hard_smp_processor_id(cpu, be32_to_cpu(intserv[j]));
>  			set_cpu_possible(cpu, true);
>  			cpu++;
> --
> 1.9.1
> 





More information about the kernel-team mailing list