ARM: 7133/1: SMP: fix per cpu timer setup before the cpu is marked online
authorThomas Gleinxer <tglx@linutronix.de>
Fri, 14 Oct 2011 11:44:41 +0000 (12:44 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 23 Oct 2011 20:22:58 +0000 (21:22 +0100)
commiteb0474544bc16a9dab53b26abd846e86ba814eb1
treed065ba5fce871af8b02a8a8b55625084548ea3a0
parent6c5482d53f195d3ca61c9ec1be25b0f4a92575fe
ARM: 7133/1: SMP: fix per cpu timer setup before the cpu is marked online

The problem is related to the early enabling of interrupts and the
per cpu timer setup before the cpu is marked online. This doesn't
need to be done in order to call calibrate_delay().

calibrate_delay() monitors jiffies, which are updated from the CPU
which is waiting for the new CPU to set the online bit.

So simply calibrate_delay() can be called on the new CPU just from
the interrupt disabled region and move the local timer setup after
stored the cpu data and before enabling interrupts.

This solves both the cpu_online vs. cpu_active problem and the
affinity setting of the per cpu timers.

Signed-off-by: Thomas Gleinxer <tglx@linutronix.de>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/smp.c