summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Tkhai2013-12-12 14:41:01 +0100
committerMax Filippov2014-01-14 21:12:41 +0100
commitabf0ea65e0adede5f40a836e6af7f62e7c850546 (patch)
tree9728cc65de7b9b0954533ce06440ea960dfc7348
parentxtensa: ISS: raise network polling rate to 10 times/sec (diff)
downloadkernel-qcow2-linux-abf0ea65e0adede5f40a836e6af7f62e7c850546.tar.gz
kernel-qcow2-linux-abf0ea65e0adede5f40a836e6af7f62e7c850546.tar.xz
kernel-qcow2-linux-abf0ea65e0adede5f40a836e6af7f62e7c850546.zip
xtensa: Enable irqs after cpu is set online
there is a small possibility that wake_up of softirq thread happens between local_irq_enable() and set_cpu_online(). In this case affinity of the thread changes to fallback affinity (i.e. CPU0). This may be a source of problems. The patch kills that possibility. Signed-off-by: Kirill Tkhai <tkhai@yandex.ru> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-rw-r--r--arch/xtensa/kernel/smp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/xtensa/kernel/smp.c b/arch/xtensa/kernel/smp.c
index 1c7a209795e8..aa8bd8717927 100644
--- a/arch/xtensa/kernel/smp.c
+++ b/arch/xtensa/kernel/smp.c
@@ -151,9 +151,10 @@ void secondary_start_kernel(void)
secondary_init_irq();
local_timer_setup(cpu);
+ set_cpu_online(cpu, true);
+
local_irq_enable();
- set_cpu_online(cpu, true);
complete(&cpu_running);
cpu_startup_entry(CPUHP_ONLINE);