+------- M. Warner Losh, 2008-12-09 -------
| In message: <20081209141908.GA15845@artx.ru>
| Ilya Orehov <elias@artx.ru> writes:
| : +------- 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?
|
| Can you please do the following:
|
| + if (!ack) {
| + printf("Need to ack %#x\n", sockevent);
| + cbb_set(sc, CBB_SOCKET_EVENT, sockevent);
| + }
|
| And let me know what it says?
Recompiled, rebooted with xl0 -
message printed only once after xl0 initialization:
"Need to ack 0x1"
Then I ejected xl0 - no message.
When the card was inserted back, same message appeared.
...
ad0: 57231MB <WDC WD600VE-07HDT0 09.07D09> at ata0-master UDMA33
xl0: <3Com 3c575TX Fast Etherlink XL> port 0x1000-0x103f irq 11 at device 0.0 on cardbus1
miibus0: <MII bus> on xl0
tdkphy0: <TDK 78Q2120 media interface> PHY 0 on miibus0
tdkphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
xl0: Ethernet address: 00:60:08:d2:38:56
xl0: [ITHREAD]
Need to ack 0x1
acd0: CDROM <TOSHIBA CD-ROM XM-1902B/1717> at ata1-master PIO4
Trying to mount root from ufs:/dev/ad0s2a
WARNING: attempt to net_add_domain(bluetooth) after domainfinalize()
xl0: reset didn't complete
xl0: command never completed!
xl0: command never completed!
xl0: command never completed!
tdkphy0: detached
miibus0: detached
xl0: detached
Need to ack 0x1
xl0: <3Com 3c575TX Fast Etherlink XL> port 0x1000-0x103f irq 11 at device 0.0 on cardbus1
miibus0: <MII bus> on xl0
tdkphy0: <TDK 78Q2120 media interface> PHY 0 on miibus0
tdkphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
xl0: Ethernet address: 00:60:08:d2:38:56
xl0: [ITHREAD]
xl0: link state changed to DOWN
xl0: link state changed to UP
regards,
Ilya.
|
| Warner
|
+-----------------------------