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

epl@labyrinth.net.au epl@labyrinth.net.au
Mon Jul 15 21:29:01 2002


On Sat, 13 Jul 2002 Donald Becker wrote:

> On Sun, 14 Jul 2002 epl@labyrinth.net.au wrote:
> 
>    kern.*				-/var/log/debug
> 
Added - thanks, I didn't know about that. I've just realised that my
previous logs didn't include kern.debug. The logs in this email does.

> > Jul 10 23:32:56 localhost kernel: eth0: vortex_error(), status=0xe081
> 
> This is reporting StatsFull.  Here is the comment from my driver release:
> 	/* HACK: Disable statistics as an interrupt source. */
> 	/* This occurs when we have the wrong media type! */
> So I suspect that your NIC is forced to the wrong media type.
> 
Hmm, discovered something odd, not sure if it is important. If the
module is loaded for the first time (case A) the debug messages is:
===
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
See Documentation/networking/vortex.txt
00:13.0: 3Com PCI 3c905B Cyclone 100baseTx at 0xfc80. Vers LK1.1.16
 00:10:4b:0a:19:95, IRQ 11
  product code 4e47 rev 00.9 date 04-21-98
  Internal config register is 1800000, transceivers 0xa.
  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
  MII transceiver found at address 24, status 786d.
  Enabling bus-master transmits and whole-frame receives.
00:13.0: scatter/gather enabled. h/w checksums enabled
eth0:  Filling in the Rx ring.
eth0: using NWAY device table, not 8
eth0: Initial media type Autonegotiate.
vortex_up(): writing 0x1800000 to InternalConfig
eth0: MII #24 status 786d, link partner capability 0020, info1 0010, setting half-duplex.
===

If I unload the module and load it again -- without rebooting (case B):
===
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
See Documentation/networking/vortex.txt
00:13.0: 3Com PCI 3c905B Cyclone 100baseTx at 0xfc80. Vers LK1.1.16
 00:10:4b:0a:19:95, IRQ 11
  product code 4e47 rev 00.9 date 04-21-98
  Internal config register is 1000000, transceivers 0xa.
  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/10baseT interface.
  Enabling bus-master transmits and whole-frame receives.
00:13.0: scatter/gather enabled. h/w checksums enabled
eth0:  Filling in the Rx ring.
eth0: using NWAY device table, not 0
eth0: Initial media type Autonegotiate.
vortex_up(): writing 0x1800000 to InternalConfig
eth0: MII #0 status 0787, link partner capability 0787, info1 0010, setting full-duplex.
===

   That could be the cause of some other weirdness like the media type.

> > Jul 10 23:33:48 localhost kernel: eth0: using NWAY device table, not 8
> > Jul 10 23:33:48 localhost kernel: eth0: MII #0 status 0080, link partner capability 0080, info1 0010, setting half-duplex.
> 
> This is bogus.  Either change your EEPROM setting to the default, or
> avoid passing an invalid media type as an option.  You shouldn't need to
> pass a module option.
> 
But I didn't pass in any media type! The only option is debug=7. With
both cases (A & B) it is possible for the network to lockup. Although
my *gut* feeling says that it is more likely with case B.

Anyway, I tried to lock up the network again in both cases. I have
skipped a lot of output between module initialisation and network
lockup -- which I am unsure of its importance. Noentheless, there are
some differences between the output of each case.

case A
===
eth0: MII #24 status 786d, link partner capability 0020, info1 0010, setting half-duplex.
eth0: vortex_up() InternalConfig 01800000.
eth0: vortex_up() irq 11 media status 88a0.
eth0: In interrupt loop, status e003.
eth0: vortex_error(), status=0xe003
eth0: Host error, FIFO diagnostic register 8000.
eth0: PCI bus error, bus status 80000020
eth0: using NWAY device table, not 8
eth0: Initial media type Autonegotiate.
vortex_up(): writing 0x1800000 to InternalConfig
===

case B
===
eth0: MII #0 status 0787, link partner capability 0787, info1 0010, setting full-duplex.
eth0: vortex_up() InternalConfig 01800000.
eth0: vortex_up() irq 11 media status 8880.
eth0: In interrupt loop, status e003.
eth0: vortex_error(), status=0xe003
eth0: Host error, FIFO diagnostic register 0000.
eth0: PCI bus error, bus status 80000020
eth0: using NWAY device table, not 8
eth0: Initial media type Autonegotiate.
vortex_up(): writing 0x1800000 to InternalConfig
===


> Your machine isn't reacting well to something.
> 
<smirks>thanks</smirks>

> > Nonetheless, I should note that:
> > - Bus-mastering is on. Turning it off might help, but I don't know how.
> 
> Is the card is a real bus-mastering slot?  Some Pentium motherboards
> cheated.
> 
I have no idea whether the motherboard cheats. Other than the lspci
output in the last email, I can tell you that the system is an IBM
330-P100, machine type 6576, model number 57H, manufactured date 605
(shurgs). I've tried looking on Google and IBM.com, but no motherboard
information.

> > - Replacing the 3C905B with a NE2000 PCI NIC eliminates the bug. The
> >   NE2000 card probably doesn't have bus-mastering.
> 
> Correct.
> 
   How would I explicitly turn off bus-mastering? I can work out how to
explicitly turn it on, but I can't work out how to turn it off. I
wouldn't be surprised if it is the NIC or motherboard, but I'd like a
confirmation if possible.

Thanks
Eddie