[vortex] 3c59x LK1.1.16 Linux-2.4 PCI bus error/Host error

Donald Becker becker@scyld.com
Fri Jul 19 07:33:01 2002


On Thu, 18 Jul 2002 epl@labyrinth.net.au wrote:

> On Tue, 16 Jul 2002 Donald Becker wrote:
> > On Tue, 16 Jul 2002 epl@labyrinth.net.au wrote:

>    The code compiled cleanly, but wouldn't even load as it complained
> of unresolved dependences: __io_virt_debug() and do_BUG(). Your code
> does not call either of these functions directly.

I hadn't heard of these functions, so I tracked them down.

They are only used if CONFIG_DEBUG_IOVIRT is defined.  You shouldn't
have that defined unless you are debugging you kernel, as the debugging
code adds overhead.  (Remember, on modern machines it's not the extra
instructions, it's the larger cache footprint.)

It looks as if someone broke CONFIG_DEBUG_IOVIRT on your
kernel+distribution.  It's pretty difficult to see this as a driver
problem.

>    The code compiled and loaded, but syslog showed the following
> messages (notice the timestamp, the errors occurred immediately):
> ===
> Jul 18 20:52:51 localhost kernel: 3c59x.c:v0.99Xc 6/27/2002 Donald Becker, becker@scyld.com
> Jul 18 20:52:51 localhost kernel:   http://www.scyld.com/network/vortex.html
> Jul 18 20:52:51 localhost kernel: eth0: 3Com 3c905B Cyclone 100baseTx at 0xfc80,  00:10:4b:0a:19:95, IRQ 11
> Jul 18 20:52:51 localhost kernel:   Internal config register is 01800000, transceivers 0xa.
> Jul 18 20:52:51 localhost kernel:   8K buffer 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
> Jul 18 20:52:52 localhost kernel:   MII transceiver found at address 24, status 7849.

There is no link beat.

> Jul 18 20:52:52 localhost kernel:   MII transceiver found at address 0, status 7849.
> Jul 18 20:52:52 localhost kernel:   Using bus-master transmits and whole-frame receives.
> Jul 18 20:52:52 localhost kernel: eth0: Initial media type Autonegotiate half-duplex.

Normal, and apparently correct.

> Jul 18 20:52:52 localhost kernel: eth0: MII #24 status 7849, link partner capability 0000, setting half-duplex.
> Jul 18 20:52:52 localhost kernel: eth0: vortex_open() irq 11 media status 8080.
> Jul 18 20:52:52 localhost kernel: eth0: Media selection timer tick happened, Autonegotiate half duplex.
> Jul 18 20:52:52 localhost kernel: eth0: MII transceiver has status 7849.

Still no link beat.
What is the debugging level?
   High enough to see packet transmit attempts?
   Could there have been a received packet?

> Jul 18 20:52:52 localhost kernel: eth0: Media selection timer finished, Autonegotiate.
> Jul 18 20:52:52 localhost kernel: eth0: Host error, status e003, FIFO diagnostic register 0000.
> Jul 18 20:52:52 localhost kernel: eth0: PCI bus error, bus status 800000a0, reset had 2000 tick left.

OK, we had a real PCI bus error, a PCI master abort.
We don't know what triggered the bus transaction
   Could there have been a received packet?

The reset succeeded immediately, so the chip is responding.
AFAIK, the driver is doing everything it needs to during a reset.

>    Did I mangle the driver? If so, how would I get it to load cleanly?

The module load problem is unrelated to the operational problem here..

-- 
Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Second Generation Beowulf Clusters
Annapolis MD 21403			410-990-9993