[3.16.y-ckt stable] Patch "powerpc: Secondary CPUs must set cpu_callin_map after setting active and online" has been added to staging queue
Michael Ellerman
michael at ellerman.id.au
Wed Jan 7 11:09:55 UTC 2015
Please drop this patch, it causes problems on other platforms. It has been reverted upstream.
cheers
On 7 January 2015 21:31:45 GMT+11:00, Luis Henriques <luis.henriques at canonical.com> wrote:
>This is a note to let you know that I have just added a patch titled
>
>powerpc: Secondary CPUs must set cpu_callin_map after setting active
>and online
>
>to the linux-3.16.y-queue branch of the 3.16.y-ckt extended stable tree
>
>which can be found at:
>
>http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.16.y-queue
>
>This patch is scheduled to be released in version 3.16.7-ckt4.
>
>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.16.y-ckt tree, see
>https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
>
>Thanks.
>-Luis
>
>------
>
>From 0265c3c126ebe856629116313eb72d6aabcbe118 Mon Sep 17 00:00:00 2001
>From: Anton Blanchard <anton at samba.org>
>Date: Tue, 9 Dec 2014 10:58:19 +1100
>Subject: powerpc: Secondary CPUs must set cpu_callin_map after setting
>active
> and online
>
>commit 7c5c92ed56d932b2c19c3f8aea86369509407d33 upstream.
>
>I have a busy ppc64le KVM box where guests sometimes hit the infamous
>"kernel BUG at kernel/smpboot.c:134!" issue during boot:
>
> BUG_ON(td->cpu != smp_processor_id());
>
>Basically a per CPU hotplug thread scheduled on the wrong CPU. The oops
>output confirms it:
>
> CPU: 0
> Comm: watchdog/130
>
>The problem is that we aren't ensuring the CPU active and online bits
>are set
>before allowing the master to continue on. The master unparks the
>secondary
>CPUs kthreads and the scheduler looks for a CPU to run on. It calls
>select_task_rq and realises the suggested CPU is not in the
>cpus_allowed
>mask. It then ends up in select_fallback_rq, and since the active and
>online bits aren't set we choose some other CPU to run on.
>
>Signed-off-by: Anton Blanchard <anton at samba.org>
>Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
>Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
>---
> arch/powerpc/kernel/smp.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
>diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
>index 1007fb802e6b..1badecec872b 100644
>--- a/arch/powerpc/kernel/smp.c
>+++ b/arch/powerpc/kernel/smp.c
>@@ -691,7 +691,6 @@ void start_secondary(void *unused)
> smp_store_cpu_info(cpu);
> set_dec(tb_ticks_per_jiffy);
> preempt_disable();
>- cpu_callin_map[cpu] = 1;
>
> if (smp_ops->setup_cpu)
> smp_ops->setup_cpu(cpu);
>@@ -733,6 +732,14 @@ void start_secondary(void *unused)
> notify_cpu_starting(cpu);
> set_cpu_online(cpu, true);
>
>+ /*
>+ * CPU must be marked active and online before we signal back to the
>+ * master, because the scheduler needs to see the cpu_online and
>+ * cpu_active bits set.
>+ */
>+ smp_wmb();
>+ cpu_callin_map[cpu] = 1;
>+
> local_irq_enable();
>
> cpu_startup_entry(CPUHP_ONLINE);
>--
>2.1.4
--
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20150107/72a5df8b/attachment.html>
More information about the kernel-team
mailing list