Re: 2.2.15 with eepro100: eth0: Too much work at interrupt

From: Kamlesh Bans (kbans@corsair.com)
Date: Fri May 19 2000 - 12:24:53 EST


At 07:34 PM 05/18/2000 -0700, Dragan Stancevic wrote:
>On Fri, May 19, 2000, Andrey Savochkin <saw@saw.sw.com.sg> wrote:
>; Hello,
>;
>; On Thu, May 18, 2000 at 06:05:59PM -0700, Dragan Stancevic wrote:
>; > From looking at the error messages that you are getting I second Andrey's
>; > mail, this is happening because the driver is experiencing problems when
>; > reading the eeprom and fails to detect you PHY. Unless you have no PHY :^)
>; >
>; > The driver has issues with reading the eeprom, it doesn't drive the
>; > eeprom serial clock correctly. By not following clock frequency
>; > specification it clocks data "into/out of" epprom incorrectly.
>;
>; It may be some other problems...
>; Original Donald's driver worked with udelay(100) until Donald himself
>; replaced the udelay by a delay implemented as a single inw()!
>; The available Intel's driver uses udelay(100).
>; NetBSD uses udelay(1).
>;
>; One of Intel's documents that's slipped the curtain of obscurity mentions
>; that EEPROM should work at the speed of at least 1us.
>; I've been given the access to a system with EEPROM reading problems, and
>; udelay(2) was quite sufficient and cured all problems.
>;
>; So, if you Dragan have the timing specification, I would appreciate a small
>; patch fixing do_eeprom_cmd, or any other hint... :-)
>; But, in any case, I suspect that the timing is not the only problem of
>; Kamlesh.
>
>
>You might aswell be right that Kamlesh's only problem is not the timing
>issue, the thing that makes me think that he has problems with the eeprom
>is his checksum 0x0 and since his PHY is missdetected he gets those timeouts
>when he trys to do MDIO, AFAIK different PHY require different programmings
>so maybe thet's why he is seing those timeouts, if mdio_read would give
>me a location and PHY# I could tell what went wrong. Can we add that in?
>Kamlesh, would you be willing to try it out if I send you a patch to deal
>with it?
>
>
>Back to the timing issue:
>I am taking time to test out the do_eeprom_cmd patch on 82557/8/9(A/B/C)
>so I can make sure it works on all sillicon steppings that I have.
>I'll drop you a mail when I am done.
>
>
>
>I have one question for Kamlesh though, can you tell when did you start
>getting invalid eeprom checksums, was it after you upgraded to a certain
>driver version?
>
>I would still need your lspci, thanks.
>
>
>--
>
> -Dragan

I would be willing to try out patches.

As far as I can tell, the invalid eeprom checksums only occur when I use
the 2.2.15 kernel either eepro100 1.18 or 1.20xx. If I use the 2.2.14
kernel, the checksums are fine.

The "res2" patch Andrey sent me (adding #define USE_IO to the 1.20.2.5
driver) works! Hooray! I have added the driver output below in addition
to another lspci -vv. (I included "-res2" to the version banner of eepro100.)

The driver with the "res1" patch did not work. (I needed to make a couple
of changes (int i and cmdlen to cmd_len) for it to compile.) Output below.

==============
This lspci is from the 2.2.14 kernel.

newton:/home/kbans# lspci -vv
00:00.0 Host bridge: Intel Corporation 82452KX/GX [Orion] (rev 02)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR-
         Latency: 2 min, 6 set

00:0c.0 SCSI storage controller: Adaptec AHA-294x / AIC-7871 (rev 03)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 8 max, 64 set, cache line size 08
         Interrupt: pin A routed to IRQ 15
         Region 0: I/O ports at ec00
         Region 1: Memory at ffe7f000 (32-bit, non-prefetchable)

00:0e.0 Non-VGA unclassified device: Intel Corporation 82375EB (rev 05)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
         Latency: 248 set

00:0f.0 Class ff00: Intel Corporation: Unknown device 0008
         Subsystem: Unknown device ec08:ffe7
         Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
         Region 0: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 1: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 2: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 3: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 4: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 5: Memory at ffe7ec00 (32-bit, prefetchable)
         Expansion ROM at ffe7e800 [disabled]

01:00.0 Host bridge: Intel Corporation 82452KX/GX [Orion] (rev 02)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR-
         Latency: 2 min, 6 set

01:0c.0 Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100]
(rev 02)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 56 max, 66 set
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at ff7ff000 (32-bit, prefetchable)
         Region 1: I/O ports at fce0
         Region 2: Memory at ffc00000 (32-bit, non-prefetchable)

01:0d.0 SCSI storage controller: Adaptec AHA-294x / AIC-7870 (rev 03)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 8 max, 64 set, cache line size 08
         Interrupt: pin A routed to IRQ 9
         Region 0: I/O ports at f800
         Region 1: Memory at ffaff000 (32-bit, non-prefetchable)

01:0e.0 SCSI storage controller: Adaptec AHA-294x / AIC-7870 (rev 03)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 8 max, 64 set, cache line size 08
         Interrupt: pin A routed to IRQ 5
         Region 0: I/O ports at f400
         Region 1: Memory at ffafe000 (32-bit, non-prefetchable)

newton:/home/kbans#

================
Output from "res2" patch.

May 8 10:51:49 newton kernel: eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
May 8 10:51:49 newton kernel: eepro100.c: $Revision: 1.20.2.5-res2 $
2000/05/19 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others
May 8 10:51:49 newton kernel: eth0: Intel PCI EtherExpress Pro100 at
0xfce0, 00:A0:C9:C9:38:43, IRQ 11.
May 8 10:51:49 newton kernel: Board assembly 678400-001, Physical
connectors present: RJ45
May 8 10:51:49 newton kernel: Primary interface chip i82555 PHY #1.
May 8 10:51:49 newton kernel: General self-test: passed.
May 8 10:51:49 newton kernel: Serial sub-system self-test: passed.
May 8 10:51:49 newton kernel: Internal registers self-test: passed.
May 8 10:51:49 newton kernel: ROM checksum self-test: passed (0x49caa8d6).
May 8 10:51:49 newton kernel: Receiver lock-up workaround activated.
May 8 10:51:49 newton kernel: eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
May 8 10:51:49 newton kernel: eepro100.c: $Revision: 1.20.2.5-res2 $
2000/05/19 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others

newton:/home/kbans# uname -a
Linux newton 2.2.15 #29 SMP Fri May 19 09:44:29 PDT 2000 i586 unknown
newton:/home/kbans# lspci -vv
00:00.0 Host bridge: Intel Corporation 82452KX/GX [Orion] (rev 02)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR-
         Latency: 2 min, 6 set

00:0c.0 SCSI storage controller: Adaptec AHA-294x / AIC-7871 (rev 03)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 8 max, 64 set, cache line size 08
         Interrupt: pin A routed to IRQ 15
         Region 0: I/O ports at ec00
         Region 1: Memory at ffe7f000 (32-bit, non-prefetchable)

00:0e.0 Non-VGA unclassified device: Intel Corporation 82375EB (rev 05)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
         Latency: 248 set

00:0f.0 Class ff00: Intel Corporation: Unknown device 0008
         Subsystem: Unknown device ec08:ffe7
         Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
         Region 0: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 1: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 2: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 3: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 4: Memory at ffe7ec00 (32-bit, prefetchable)
         Region 5: Memory at ffe7ec00 (32-bit, prefetchable)
         Expansion ROM at ffe7e800 [disabled]

01:00.0 Host bridge: Intel Corporation 82452KX/GX [Orion] (rev 02)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR-
         Latency: 2 min, 6 set

01:0c.0 Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100]
(rev 02)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 56 max, 66 set
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at ff7ff000 (32-bit, prefetchable)
         Region 1: I/O ports at fce0
         Region 2: Memory at ffc00000 (32-bit, non-prefetchable)

01:0d.0 SCSI storage controller: Adaptec AHA-294x / AIC-7870 (rev 03)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 8 max, 64 set, cache line size 08
         Interrupt: pin A routed to IRQ 9
         Region 0: I/O ports at f800
         Region 1: Memory at ffaff000 (32-bit, non-prefetchable)

01:0e.0 SCSI storage controller: Adaptec AHA-294x / AIC-7870 (rev 03)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
         Latency: 8 min, 8 max, 64 set, cache line size 08
         Interrupt: pin A routed to IRQ 5
         Region 0: I/O ports at f400
         Region 1: Memory at ffafe000 (32-bit, non-prefetchable)

newton:/home/kbans#
===============
Driver output with "res1" patch

May 8 10:56:09 newton kernel: eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
May 8 10:56:09 newton kernel: eepro100.c: $Revision: 1.20.2.5-res1 $
2000/05/19 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others
May 8 10:56:09 newton kernel: eth0: Invalid EEPROM checksum 0x0000, check
settings before activating this device!
May 8 10:56:09 newton kernel: eth0: Intel PCI EtherExpress Pro100 at
0xc8808000, 00:00:00:00:00:00, IRQ 11.
May 8 10:56:09 newton kernel: Board assembly 000000-000, Physical
connectors present:
May 8 10:56:09 newton kernel: Primary interface chip None PHY #0.
May 8 10:56:09 newton kernel: General self-test: passed.
May 8 10:56:09 newton kernel: Serial sub-system self-test: passed.
May 8 10:56:09 newton kernel: Internal registers self-test: passed.
May 8 10:56:09 newton kernel: ROM checksum self-test: passed (0x49caa8d6).
May 8 10:56:09 newton kernel: Receiver lock-up workaround activated.
May 8 10:56:09 newton kernel: eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
May 8 10:56:09 newton kernel: eepro100.c: $Revision: 1.20.2.5-res1 $
2000/05/19 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others

May 8 10:56:09 newton kernel: mdio_read() timed out with val = 08000000.
May 8 10:56:09 newton kernel: eth0: Too much work at interrupt, status=0x2000.
May 8 10:56:09 newton last message repeated 2 times
May 8 10:56:09 newton kernel: mdio_read() timed out with val = 08050000.
May 8 10:56:09 newton kernel: eth0: Too much work at interrupt, status=0x2000.
May 8 10:56:09 newton kernel: eth0: Too much work at interrupt, status=0xfc00.
May 8 10:56:10 newton kernel: eth0: Too much work at interrupt, status=0xa000.
May 8 10:56:11 newton kernel: eth0: Too much work at interrupt, status=0x2000.
May 8 10:56:11 newton kernel: mdio_read() timed out with val = 08050000.
May 8 10:56:12 newton kernel: eth0: Too much work at interrupt, status=0x2000.
May 8 10:56:12 newton kernel: eth0: Too much work at interrupt, status=0x4000.
May 8 10:56:12 newton kernel: eth0: Too much work at interrupt, status=0x2000.
May 8 10:56:13 newton kernel: eth0: Too much work at interrupt, status=0x4000.
May 8 10:56:13 newton kernel: mdio_read() timed out with val = 08050000.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue May 23 2000 - 21:00:17 EST