All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Kerstin Jonsson <kerstin.jonsson@ericsson.com>
Cc: Paul Mackerras <paulus@samba.org>,
	Michael Neuling <mikey@neuling.org>,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	Will Schmidt <will_schmidt@vnet.ibm.com>
Subject: Re: [PATCH] PPC_47x SMP fix
Date: Thu, 19 May 2011 13:09:12 +1000	[thread overview]
Message-ID: <1305774552.7481.26.camel@pasglop> (raw)
In-Reply-To: <1305712631-21690-1-git-send-email-kerstin.jonsson@ericsson.com>

On Wed, 2011-05-18 at 11:57 +0200, Kerstin Jonsson wrote:
> commit c56e58537d504706954a06570b4034c04e5b7500 breaks SMP support in PPC_47x chip.
>  secondary_ti must be set to current thread info before callin kick_cpu or else
>  start_secondary_47x will jump into void when trying to return to c-code.
>  In the current setup secondary_ti is initialized before the CPU idle task is started
>  and only the boot core will start. I am not sure this is the correct solution, but it
>  makes SMP possible in my chip.
>  Note! The HOTPLUG support probably need some fixing to, There is no trampoline code
>  available in head_44x.S - start_secondary_resume?

Sending to Linus now. I've also committed a fix for the later, moving
the 32-bit definition of start_secondary_resume to misc_32.S

Thanks !

Cheers,
Ben. 
> 
> Signed-off-by: Kerstin Jonsson <kerstin.jonsson@ericsson.com>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Michael Neuling <mikey@neuling.org>
> Cc: Will Schmidt <will_schmidt@vnet.ibm.com>
> ---
>  arch/powerpc/kernel/smp.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
> index cbdbb14..f2dcab7 100644
> --- a/arch/powerpc/kernel/smp.c
> +++ b/arch/powerpc/kernel/smp.c
> @@ -410,8 +410,6 @@ int __cpuinit __cpu_up(unsigned int cpu)
>  {
>  	int rc, c;
>  
> -	secondary_ti = current_set[cpu];
> -
>  	if (smp_ops == NULL ||
>  	    (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu)))
>  		return -EINVAL;
> @@ -421,6 +419,8 @@ int __cpuinit __cpu_up(unsigned int cpu)
>  	if (rc)
>  		return rc;
>  
> +	secondary_ti = current_set[cpu];
> +
>  	/* Make sure callin-map entry is 0 (can be leftover a CPU
>  	 * hotplug
>  	 */

WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Kerstin Jonsson <kerstin.jonsson@ericsson.com>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	Paul Mackerras <paulus@samba.org>,
	Michael Neuling <mikey@neuling.org>,
	Will Schmidt <will_schmidt@vnet.ibm.com>
Subject: Re: [PATCH] PPC_47x SMP fix
Date: Thu, 19 May 2011 13:09:12 +1000	[thread overview]
Message-ID: <1305774552.7481.26.camel@pasglop> (raw)
In-Reply-To: <1305712631-21690-1-git-send-email-kerstin.jonsson@ericsson.com>

On Wed, 2011-05-18 at 11:57 +0200, Kerstin Jonsson wrote:
> commit c56e58537d504706954a06570b4034c04e5b7500 breaks SMP support in PPC_47x chip.
>  secondary_ti must be set to current thread info before callin kick_cpu or else
>  start_secondary_47x will jump into void when trying to return to c-code.
>  In the current setup secondary_ti is initialized before the CPU idle task is started
>  and only the boot core will start. I am not sure this is the correct solution, but it
>  makes SMP possible in my chip.
>  Note! The HOTPLUG support probably need some fixing to, There is no trampoline code
>  available in head_44x.S - start_secondary_resume?

Sending to Linus now. I've also committed a fix for the later, moving
the 32-bit definition of start_secondary_resume to misc_32.S

Thanks !

Cheers,
Ben. 
> 
> Signed-off-by: Kerstin Jonsson <kerstin.jonsson@ericsson.com>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Michael Neuling <mikey@neuling.org>
> Cc: Will Schmidt <will_schmidt@vnet.ibm.com>
> ---
>  arch/powerpc/kernel/smp.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
> index cbdbb14..f2dcab7 100644
> --- a/arch/powerpc/kernel/smp.c
> +++ b/arch/powerpc/kernel/smp.c
> @@ -410,8 +410,6 @@ int __cpuinit __cpu_up(unsigned int cpu)
>  {
>  	int rc, c;
>  
> -	secondary_ti = current_set[cpu];
> -
>  	if (smp_ops == NULL ||
>  	    (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu)))
>  		return -EINVAL;
> @@ -421,6 +419,8 @@ int __cpuinit __cpu_up(unsigned int cpu)
>  	if (rc)
>  		return rc;
>  
> +	secondary_ti = current_set[cpu];
> +
>  	/* Make sure callin-map entry is 0 (can be leftover a CPU
>  	 * hotplug
>  	 */



  reply	other threads:[~2011-05-19  3:09 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-18  9:57 [PATCH] PPC_47x SMP fix Kerstin Jonsson
2011-05-18  9:57 ` Kerstin Jonsson
2011-05-19  3:09 ` Benjamin Herrenschmidt [this message]
2011-05-19  3:09   ` Benjamin Herrenschmidt
  -- strict thread matches above, loose matches on Subject: below --
2011-05-18  9:51 Kerstin Jonsson
2011-05-18  9:51 ` Kerstin Jonsson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1305774552.7481.26.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=kerstin.jonsson@ericsson.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mikey@neuling.org \
    --cc=paulus@samba.org \
    --cc=will_schmidt@vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.