aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Rostedt <[email protected]>2012-11-15 12:52:44 -0500
committerFrederic Weisbecker <[email protected]>2012-11-17 19:31:16 +0100
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 <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Paul Gortmaker <[email protected]> Signed-off-by: Frederic Weisbecker <[email protected]>
-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)
if (llist_empty(this_list))
return false;
+ /* All work should have been flushed before going offline */
+ WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
+
return true;
}