powerpc: check_and_cede_processor() never cedes
authorAnton Blanchard <anton@samba.org>
Wed, 27 Jun 2012 13:13:52 +0000 (13:13 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Jul 2012 16:03:21 +0000 (09:03 -0700)
commitee1602ff18545ddf7f19638fb350e4eec2030c0d
tree5fb6a4f86e7ef199685a19a996178b5c9d8e7252
parent8057f6c444173496806618f2fe173c2f02fb3995
powerpc: check_and_cede_processor() never cedes

commit 0b17ba7258db83cd02da560884e053b85de371f2 upstream.

Commit f948501b36c6 ("Make hard_irq_disable() actually hard-disable
interrupts") caused check_and_cede_processor to stop working.
->irq_happened will never be zero right after a hard_irq_disable
so the compiler removes the call to cede_processor completely.

The bug was introduced back in the lazy interrupt handling rework
of 3.4 but was hidden until recently because hard_irq_disable did
nothing.

This issue will eventually appear in 3.4 stable since the
hard_irq_disable fix is marked stable, so mark this one for stable
too.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/include/asm/hw_irq.h
arch/powerpc/platforms/pseries/processor_idle.c