aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2012-11-15 12:52:44 -0500
committerFrederic Weisbecker <fweisbec@gmail.com>2012-11-17 13:31:16 -0500
commit8aa2accee41f7045dc904fa41d4475b2f6ffae3e (patch)
tree506c64cc0ceefb1265de57985000fd9cb61b1418
parentc0e980a4bd7fc5c9b748f2f0209d2a48c0fdf0ab (diff)
irq_work: Warn if there's still work on cpu_down
If we are in nohz and there's still irq_work to be done when the idle task is about to go offline, give a nasty warning. Everything should have been flushed from the CPU_DYING notifier already. Further attempts to enqueue an irq_work are buggy because irqs are disabled by __cpu_disable(). The best we can do is to report the issue to the user. Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-rw-r--r--kernel/irq_work.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/irq_work.c b/kernel/irq_work.c
index 4ed17490f629..480f74715ba9 100644
--- a/kernel/irq_work.c
+++ b/kernel/irq_work.c
@@ -109,6 +109,9 @@ bool irq_work_needs_cpu(void)
109 if (llist_empty(this_list)) 109 if (llist_empty(this_list))
110 return false; 110 return false;
111 111
112 /* All work should have been flushed before going offline */
113 WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
114
112 return true; 115 return true;
113} 116}
114 117