public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] cpu hotplug fixes for dependent_sleeper and wake_sleeping_dependent
@ 2004-08-30  9:41 Nathan Lynch
  2004-08-30 13:29 ` Ingo Molnar
  0 siblings, 1 reply; 3+ messages in thread
From: Nathan Lynch @ 2004-08-30  9:41 UTC (permalink / raw)
  To: akpm; +Cc: lkml, Rusty Russell, Ingo Molnar

Hi-

I've reported this issue a couple of times and I think I've finally
tracked it down, though I don't know whether I've come up with the best
fix.

To recap, offlining a cpu with current bk results in the "Aiee, killing
interrupt handler!" panic from do_exit().  This seems to be triggered
only with CONFIG_PREEMPT and CONFIG_SCHED_SMT both enabled.  I believe
the problem is that when do_stop() calls schedule(), dependent_sleeper()
drops the "offline" cpu's rq->lock and never reacquires it.

The following seems to work (tested on ppc64).  Is there a better way?


Nathan

---

Return early from dependent_sleeper and wake_sleeping_dependent if
this_cpu is offline to avoid releasing this_cpu's rq->lock.

Signed-off-by: Nathan Lynch <nathanl@austin.ibm.com>


---


diff -puN kernel/sched.c~sched-smt-cpu-hotplug-fix kernel/sched.c
--- 2.6-bk/kernel/sched.c~sched-smt-cpu-hotplug-fix	2004-08-30 04:22:49.000000000 -0500
+++ 2.6-bk-nathanl/kernel/sched.c	2004-08-30 04:23:28.000000000 -0500
@@ -2502,7 +2502,7 @@ static inline void wake_sleeping_depende
 	cpumask_t sibling_map;
 	int i;
 
-	if (!(sd->flags & SD_SHARE_CPUPOWER))
+	if (!(sd->flags & SD_SHARE_CPUPOWER) || cpu_is_offline(this_cpu))
 		return;
 
 	/*
@@ -2549,7 +2549,7 @@ static inline int dependent_sleeper(int 
 	int ret = 0, i;
 	task_t *p;
 
-	if (!(sd->flags & SD_SHARE_CPUPOWER))
+	if (!(sd->flags & SD_SHARE_CPUPOWER) || cpu_is_offline(this_cpu))
 		return 0;
 
 	/*

_



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-09-01 23:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-30  9:41 [PATCH] cpu hotplug fixes for dependent_sleeper and wake_sleeping_dependent Nathan Lynch
2004-08-30 13:29 ` Ingo Molnar
2004-09-01 23:25   ` Rusty Russell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox