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

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

  • Next message: Andrew Stubbs: "[BUG] linux-2.3.99-pre9-2"

    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 : Fri May 19 2000 - 13:31:54 EDT