summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_intr.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2007-03-02 17:01:45 +0000
committerjhb <jhb@FreeBSD.org>2007-03-02 17:01:45 +0000
commitd58c5abd8b93eab4eef449392a503f9032aa614b (patch)
tree78a3220e7fb328b62da6ed6d813786deb1cca950 /sys/kern/kern_intr.c
parentc2a084f538e21f00a7cc7c86e3b86fbefbc9152e (diff)
downloadFreeBSD-src-d58c5abd8b93eab4eef449392a503f9032aa614b.zip
FreeBSD-src-d58c5abd8b93eab4eef449392a503f9032aa614b.tar.gz
- Don't do the interrupt storm protection stuff for software interrupt
handlers. - Use pause() when throtting during an interrupt storm. Reported by: kris (1)
Diffstat (limited to 'sys/kern/kern_intr.c')
-rw-r--r--sys/kern/kern_intr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
index 0964b9a..38c6772 100644
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -696,14 +696,15 @@ ithread_execute_handlers(struct proc *p, struct intr_event *ie)
* number of back to back interrupts exceeds the storm threshold,
* then enter storming mode.
*/
- if (intr_storm_threshold != 0 && ie->ie_count >= intr_storm_threshold) {
+ if (intr_storm_threshold != 0 && ie->ie_count >= intr_storm_threshold &&
+ !(ie->ie_flags & IE_SOFT)) {
if (ie->ie_warned == 0) {
printf(
"Interrupt storm detected on \"%s\"; throttling interrupt source\n",
ie->ie_name);
ie->ie_warned = 1;
}
- tsleep(&ie->ie_count, 0, "istorm", 1);
+ pause("istorm", 1);
} else
ie->ie_count++;
OpenPOWER on IntegriCloud