Re: "interrupt storm..."; seems associated with an0 NIC

From: Ilya Orehov <elias_at_artx.ru>
Date: Tue, 9 Dec 2008 22:24:39 +0300
+------- M. Warner Losh, 2008-12-09 -------
| In message: <20081209141908.GA15845_at_artx.ru>
|             Ilya Orehov <elias_at_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
| : _at__at_ -689,6 +689,7 _at__at_ 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
| : _at__at_ -722,6 +723,7 _at__at_ 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
| : _at__at_ -732,7 +734,10 _at__at_ 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
| 
+-----------------------------

Received on Tue Dec 09 2008 - 18:24:46 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:38 UTC