path: root/kernel/irq_work.c
diff options
authorSteven Rostedt <>2012-11-15 12:52:44 -0500
committerFrederic Weisbecker <>2012-11-17 19:31:16 +0100
commit8aa2accee41f7045dc904fa41d4475b2f6ffae3e (patch)
tree506c64cc0ceefb1265de57985000fd9cb61b1418 /kernel/irq_work.c
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 <> Cc: Peter Zijlstra <> Cc: Thomas Gleixner <> Cc: Ingo Molnar <> Cc: Andrew Morton <> Cc: Paul Gortmaker <> Signed-off-by: Frederic Weisbecker <>
Diffstat (limited to 'kernel/irq_work.c')
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;