Prev: TTY/n_gsm: potential double lock
Next: [PATCH] perf_events: fix event scheduling issues introduced by transactional API (take 2)
From: Amit K. Arora on 25 May 2010 09:30 On Tue, May 25, 2010 at 01:31:35PM +0200, Peter Zijlstra wrote: > On Mon, 2010-05-24 at 15:29 +0530, Amit K. Arora wrote: > > > > Thus, since above race can never happen, is there any other issue with > > this patch ? > > It doesn't seem to apply nicely... Here is the new patch. Problem : In a stress test where some heavy tests were running along with regular CPU offlining and onlining, a hang was observed. The system seems to be hung at a point where migration_call() tries to kill the migration_thread of the dying CPU, which just got moved to the current CPU. This migration thread does not get a chance to run (and die) since rt_throttled is set to 1 on current, and it doesn't get cleared as the hrtimer which is supposed to reset the rt bandwidth (sched_rt_period_timer) is tied to the CPU which we just marked dead! Solution : This patch pushes the killing of migration thread to "CPU_POST_DEAD" event. By then all the timers (including sched_rt_period_timer) should have got migrated (along with other callbacks). Thanks! Regards, Amit Arora Signed-off-by: Amit Arora <aarora(a)in.ibm.com> Signed-off-by: Gautham R Shenoy <ego(a)in.ibm.com> Cc: Ingo Molnar <mingo(a)elte.hu> Cc: Peter Zijlstra <peterz(a)infradead.org> Cc: Tejun Heo <tj(a)kernel.org> --- diff -Nuarp linux-2.6-next-20100525.org/kernel/stop_machine.c linux-2.6-next-20100525/kernel/stop_machine.c --- linux-2.6-next-20100525.org/kernel/stop_machine.c 2010-05-25 14:27:51.000000000 -0400 +++ linux-2.6-next-20100525/kernel/stop_machine.c 2010-05-25 14:30:09.000000000 -0400 @@ -321,7 +321,7 @@ static int __cpuinit cpu_stop_cpu_callba #ifdef CONFIG_HOTPLUG_CPU case CPU_UP_CANCELED: - case CPU_DEAD: + case CPU_POST_DEAD: { struct cpu_stop_work *work; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |