alpha: Fix preemption handling in idle loop
authorFrederic Weisbecker <fweisbec@gmail.com>
Thu, 23 Aug 2012 12:11:25 +0000 (14:11 +0200)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 23 Sep 2012 14:44:42 +0000 (07:44 -0700)
commit6a6c0272f17cc80a8286d915f2ddf31557c2d559
tree3b4babe1cbfa3659d42d9ecf326f6169defe4730
parenta10d206ef1a83121ab7430cb196e0376a7145b22
alpha: Fix preemption handling in idle loop

cpu_idle() is called on the boot CPU by the init code with
preemption disabled. But the cpu_idle() function in alpha
doesn't handle this when it calls schedule() directly.

Fix it by converting it into schedule_preempt_disabled().

Also disable preemption before calling cpu_idle() from
secondary CPU entry code to stay consistent with this
state.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Michael Cree <mcree@orcon.net.nz>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: alpha <linux-alpha@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
arch/alpha/kernel/process.c
arch/alpha/kernel/smp.c