* [PATCH] PPC_47x SMP fix
@ 2011-05-18 9:57 Kerstin Jonsson
2011-05-19 3:09 ` Benjamin Herrenschmidt
0 siblings, 1 reply; 3+ messages in thread
From: Kerstin Jonsson @ 2011-05-18 9:57 UTC (permalink / raw)
To: benh, linuxppc-dev, linux-kernel
Cc: Kerstin Jonsson, Michael Neuling, Paul Mackerras, Will Schmidt
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?
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
*/
--
1.7.2.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] PPC_47x SMP fix
2011-05-18 9:57 [PATCH] PPC_47x SMP fix Kerstin Jonsson
@ 2011-05-19 3:09 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 3+ messages in thread
From: Benjamin Herrenschmidt @ 2011-05-19 3:09 UTC (permalink / raw)
To: Kerstin Jonsson
Cc: Paul Mackerras, Michael Neuling, linuxppc-dev, linux-kernel,
Will Schmidt
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
> */
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] PPC_47x SMP fix
@ 2011-05-18 9:51 Kerstin Jonsson
0 siblings, 0 replies; 3+ messages in thread
From: Kerstin Jonsson @ 2011-05-18 9:51 UTC (permalink / raw)
To: benh, linuxppc-dev, linux-kernel
Cc: Kerstin Jonsson, Michael Neuling, Darren Hart, Paul Mackerras,
Will Schmidt
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?
Signed-off-by: Kerstin Jonsson <kerstin.jonsson@ericsson.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Neuling <mikey@neuling.org>
Cc: Darren Hart <dvhltc@us.ibm.com>
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
*/
--
1.7.2.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-05-19 3:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-18 9:57 [PATCH] PPC_47x SMP fix Kerstin Jonsson
2011-05-19 3:09 ` Benjamin Herrenschmidt
-- strict thread matches above, loose matches on Subject: below --
2011-05-18 9:51 Kerstin Jonsson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).