summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_intr.c
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2007-04-19 01:24:32 +0000
committernjl <njl@FreeBSD.org>2007-04-19 01:24:32 +0000
commit95e9f5610b146de8c256d5b3b928a80f3cfcf46d (patch)
tree84f1ee3016082bccb71d48b560e137c6b693c00e /sys/kern/kern_intr.c
parent021deab651b9dfe702f6782a0cd84160cfde4879 (diff)
downloadFreeBSD-src-95e9f5610b146de8c256d5b3b928a80f3cfcf46d.zip
FreeBSD-src-95e9f5610b146de8c256d5b3b928a80f3cfcf46d.tar.gz
Bump the interrupt storm detection counter to 1000. My slow fileserver
gets a bogus irq storm detected when periodic daily kicks off at 3 am and disconnects the disk. Change the print logic to print once per second when the storm is occurring instead of only once. Otherwise, it appeared that something else was causing the errors each night at 3 am since the print only occurred the first time. Reviewed by: jhb MFC after: 1 week
Diffstat (limited to 'sys/kern/kern_intr.c')
-rw-r--r--sys/kern/kern_intr.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
index 38c6772..94e2672 100644
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -83,7 +83,7 @@ void *vm_ih;
static MALLOC_DEFINE(M_ITHREAD, "ithread", "Interrupt Threads");
-static int intr_storm_threshold = 500;
+static int intr_storm_threshold = 1000;
TUNABLE_INT("hw.intr_storm_threshold", &intr_storm_threshold);
SYSCTL_INT(_hw, OID_AUTO, intr_storm_threshold, CTLFLAG_RW,
&intr_storm_threshold, 0,
@@ -698,11 +698,11 @@ ithread_execute_handlers(struct proc *p, struct intr_event *ie)
*/
if (intr_storm_threshold != 0 && ie->ie_count >= intr_storm_threshold &&
!(ie->ie_flags & IE_SOFT)) {
- if (ie->ie_warned == 0) {
+ /* Report the message only once every second. */
+ if (ppsratecheck(&ie->ie_warntm, &ie->ie_warncnt, 1)) {
printf(
- "Interrupt storm detected on \"%s\"; throttling interrupt source\n",
+ "interrupt storm detected on \"%s\"; throttling interrupt source\n",
ie->ie_name);
- ie->ie_warned = 1;
}
pause("istorm", 1);
} else
OpenPOWER on IntegriCloud