[PATCH] PPC64 call idle_task_exit with irqs disabled

From: Paul Mackerras
Date: Tue Mar 08 2005 - 04:59:15 EST


This patch is from Nathan Lynch <ntl@xxxxxxxxx>.

Seeing this very occasionally during cpu hotplug testing:

Badness in slb_flush_and_rebolt at arch/ppc64/mm/slb.c:52
Call Trace:
[c0000000ef0efbe0] [c0000000000127a0] .__switch_to+0xa4/0xf0 (unreliable)
[c0000000ef0efc80] [c000000000050178] .idle_task_exit+0xbc/0x15c
[c0000000ef0efd10] [c00000000000d108] .cpu_die+0x18/0x68
[c0000000ef0efd90] [c00000000001023c] .dedicated_idle+0x1fc/0x254
[c0000000ef0efe80] [c00000000000fc80] .cpu_idle+0x3c/0x54
[c0000000ef0eff00] [c00000000003aa90] .start_secondary+0x108/0x148
[c0000000ef0eff90] [c00000000000bd28] .enable_64b_mode+0x0/0x28

idle_task_exit can result in a call to slb_flush_and_rebolt, which
must not be called with interrupts enabled. Make the call with
interrupts disabled.


Signed-off-by: Nathan Lynch <ntl@xxxxxxxxx>
Signed-off-by: Paul Mackerras <paulus@xxxxxxxxx>

pSeries_setup.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.11-bk2/arch/ppc64/kernel/pSeries_setup.c
===================================================================
--- linux-2.6.11-bk2.orig/arch/ppc64/kernel/pSeries_setup.c 2005-03-07 04:09:29.000000000 +0000
+++ linux-2.6.11-bk2/arch/ppc64/kernel/pSeries_setup.c 2005-03-07 04:15:22.000000000 +0000
@@ -322,8 +322,8 @@ static void __init pSeries_discover_pic

static void pSeries_mach_cpu_die(void)
{
- idle_task_exit();
local_irq_disable();
+ idle_task_exit();
/* Some hardware requires clearing the CPPR, while other hardware does not
* it is safe either way
*/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/