"interrupt storm..."; seems associated with an0 NIC
Ilya Orehov
elias at artx.ru
Tue Dec 9 14:36:36 UTC 2008
+------- M. Warner Losh, 2008-12-05 -------
| Thanks. Grump. Will have to back out and try again.
Hello!
I see storm too, but with 32-bit cards.
Thinkpad 600X, two cardbus cards: xl0 and ath0.
Since pccbb.c 1.176 and pccbb_pci.c 1.30
after rebooting with card(s) inserted or inserting any card
I see "interrupt storm...throttling..." messages about 1 per second.
Laptop remains usable, cards working.
Storm don't stop even if I eject all cards.
During storm, vmstat -i shows rate ~500 on cbb.
No messages appeared if laptop rebooted without cards
(until any card inserted).
Later revisions ( pccbb.c 1.178 and pccbb_pci.c 1.31)
didn't bring any visible changes.
But this hack helped.
No storm detected, vmstat -i shows rate 0 or 1 on cbb.
diff -up xxx/pccbb_pci.c ./pccbb_pci.c
--- xxx/pccbb_pci.c 2008-12-06 11:56:00.000000000 +0300
+++ ./pccbb_pci.c 2008-12-09 14:08:03.000000000 +0300
@@ -689,6 +689,7 @@ cbb_pci_filt(void *arg)
struct cbb_softc *sc = arg;
uint32_t sockevent;
int retval = FILTER_STRAY;
+ int ack = 0;
/*
* Read the socket event. Sometimes, the theory goes, the PCI
@@ -722,6 +723,7 @@ cbb_pci_filt(void *arg)
sc->cardok = 0;
cbb_disable_func_intr(sc);
wakeup(&sc->intrhand);
+ ack = 1;
}
/*
* If we get a power interrupt, wakeup anybody that might
@@ -732,7 +734,10 @@ cbb_pci_filt(void *arg)
cbb_set(sc, CBB_SOCKET_EVENT, CBB_SOCKET_EVENT_POWER);
sc->powerintr++;
wakeup((void *)&sc->powerintr);
+ ack = 1;
}
+ if (!ack)
+ cbb_set(sc, CBB_SOCKET_EVENT, sockevent);
retval = FILTER_HANDLED;
}
/*
Do you need dmesg or some other info?
regards,
Ilya.
|
| Warner
| _______________________________________________
| freebsd-current at freebsd.org mailing list
| http://lists.freebsd.org/mailman/listinfo/freebsd-current
| To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
|
+-----------------------------
More information about the freebsd-current
mailing list