[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