[patch 03/54] NOHZ: Rate limit the local softirq pending warning output

Chris Wright
2007-06-08T08:07:22Z

[-- Attachment #1: nohz-rate-limit-the-local-softirq-pending-warning-output.patch --]
[-- Type: text/plain, Size: 1223 bytes --]

-stable review patch. If anyone has any objections, please let us know.
---------------------

From: Thomas Gleixner <tglx@linutronix.de>

The warning in the NOHZ code, which triggers when a CPU goes idle with
softirqs pending can fill up the logs quite quickly. Rate limit the output
until we found the root cause of that problem.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---

kernel/time/tick-sched.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

--- linux-2.6.21.4.orig/kernel/time/tick-sched.c
+++ linux-2.6.21.4/kernel/time/tick-sched.c
@@ -167,9 +167,15 @@ void tick_nohz_stop_sched_tick(void)
goto end;

cpu = smp_processor_id();
- if (unlikely(local_softirq_pending()))
- printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n",
- local_softirq_pending());
+ if (unlikely(local_softirq_pending())) {
+ static int ratelimit;
+
+ if (ratelimit < 10) {
+ printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n",
+ local_softirq_pending());
+ ratelimit++;
+ }
+ }

now = ktime_get();
/*

--