Problems with Linux 2.2.[1-11]/SMP/eepro.c 2.09j

Lars R. Clausen lrclause@www1.tam.uiuc.edu
Tue Aug 17 03:38:54 1999


Hi,
I have a server here on a Tyan Titan-Pro dual PPro motherboard (Intel
440FX) with an EEPro100 card, an Adaptec 2940, running 2.2.11.
Everything is fine as long as I run a uni-processor kernel, but with
both processors in, the EEProc freaks out as soon as I try any contact
with the network (even just a ping):

Aug 17 01:33:03 hilbert kernel: eth0: Transmit timed out: status 2050  0070 at 0/12 command 0001a000. 
Aug 17 01:33:03 hilbert kernel: eth0: Trying to restart the transmitter... 

I've tried every kernel from 2.2.0 to 2.2.11 with the same results.  I
put the 2.09j driver into the 2.2.11 kernel, no difference.  I do have
MTRR and enhanced real-time clock support on.  The EEPro is on IRQ 11
and the 2940 is on IRQ 18, so I think we can discount the 2940 as a
problem.  The BIOS does recognize both CPU's.  Interestingly, when I
rmmod the driver, it stays active (according to eepro100-diag -mm),
and I start getting 'Unable to handle kernel paging request at virtual
address c882ea74 (close to the ioport shown below).

Anyways, I'm running out of new fixes to try, so I turn to you to hear
if you have any ideas?  I'll be happy to provide more debug info if you
think it can help.

Thanks in advance!
-Lars

Here's the basic info:

/proc/ioports:
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
03c0-03df : vga+
8100-81be : aic7xxx
c8831000-c883101f : Intel Speedo3 Ethernet

I find this ioport most unusual.  In uni-processor mode, it lies
happily at 0x8000-0x801f, and the diag tools also say 0x8000

/proc/interrupts:
           CPU0       CPU1       
  0:      71086      34245    IO-APIC-edge  timer
  1:        812       1494    IO-APIC-edge  keyboard
  2:          0          0          XT-PIC  cascade
  8:          2          0    IO-APIC-edge  rtc
 11:          0          0    IO-APIC-edge  eth0
 13:          1          0          XT-PIC  fpu
 18:       2102       2024   IO-APIC-level  aic7xxx
NMI:          0
ERR:          0

Interestingly, the aic7xxx goes into IRQ 15 in uni-processor mode.

from /var/log/messages:
Aug 17 01:27:39 hilbert kernel: CPU0: Intel Pentium Pro stepping 09 
Aug 17 01:27:39 hilbert kernel: Total of 2 processors activated (331.78 BogoMIPS). 
Aug 17 01:27:39 hilbert kernel: enabling symmetric IO mode... ...done. 
Aug 17 01:27:39 hilbert kernel: ENABLING IO-APIC IRQs 
Aug 17 01:27:39 hilbert kernel: init IO_APIC IRQs 
Aug 17 01:27:39 hilbert kernel:  IO-APIC pin 0, 20, 21, 22, 23 not connected. 
Aug 17 01:27:39 hilbert kernel: number of MP IRQ sources: 21. 
Aug 17 01:27:39 hilbert kernel: number of IO-APIC registers: 24. 
Aug 17 01:27:39 hilbert kernel: testing the IO APIC....................... 
Aug 17 01:27:39 hilbert kernel: .... register #00: 00000000 
Aug 17 01:27:39 hilbert kernel: .......    : physical APIC id: 00 
Aug 17 01:27:39 hilbert kernel: .... register #01: 00170011 
Aug 17 01:27:39 hilbert kernel: .......     : max redirection entries: 0017 
Aug 17 01:27:39 hilbert kernel: .......     : IO APIC version: 0011 
Aug 17 01:27:39 hilbert kernel: .... register #02: 00000000 
Aug 17 01:27:39 hilbert kernel: .......     : arbitration: 00 
Aug 17 01:27:39 hilbert kernel: .... IRQ redirection table: 
Aug 17 01:27:39 hilbert kernel:  NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:    
Aug 17 01:27:39 hilbert kernel:  00 000 00  1    0    0   0   0    0    0    00 
Aug 17 01:27:39 hilbert kernel:  01 000 00  0    0    0   0   0    1    1    59 
Aug 17 01:27:39 hilbert kernel:  02 0FF 0F  0    0    0   0   0    1    1    51 
Aug 17 01:27:39 hilbert kernel:  03 000 00  0    0    0   0   0    1    1    61 
Aug 17 01:27:39 hilbert kernel:  04 000 00  0    0    0   0   0    1    1    69 
Aug 17 01:27:39 hilbert kernel:  05 000 00  0    0    0   0   0    1    1    71 
Aug 17 01:27:39 hilbert kernel:  06 000 00  0    0    0   0   0    1    1    79 
Aug 17 01:27:39 hilbert kernel:  07 000 00  0    0    0   0   0    1    1    81 
Aug 17 01:27:39 hilbert kernel:  08 000 00  0    0    0   0   0    1    1    89 
Aug 17 01:27:39 hilbert kernel:  09 000 00  0    0    0   0   0    1    1    91 
Aug 17 01:27:39 hilbert kernel:  0a 000 00  0    0    0   0   0    1    1    99 
Aug 17 01:27:39 hilbert kernel:  0b 000 00  0    0    0   0   0    1    1    A1 
Aug 17 01:27:39 hilbert kernel:  0c 000 00  0    0    0   0   0    1    1    A9 
Aug 17 01:27:39 hilbert kernel:  0d 000 00  1    0    0   0   0    0    0    00 
Aug 17 01:27:39 hilbert kernel:  0e 000 00  0    0    0   0   0    1    1    B1 
Aug 17 01:27:39 hilbert kernel:  0f 000 00  0    0    0   0   0    1    1    B9 
Aug 17 01:27:39 hilbert kernel:  10 0FF 0F  1    1    0   1   0    1    1    C1 
Aug 17 01:27:39 hilbert kernel:  11 0FF 0F  1    1    0   1   0    1    1    C9 
Aug 17 01:27:39 hilbert kernel:  12 0FF 0F  1    1    0   1   0    1    1    D1 
Aug 17 01:27:39 hilbert kernel:  13 0FF 0F  1    1    0   1   0    1    1    D9 
Aug 17 01:27:39 hilbert kernel:  14 000 00  1    0    0   0   0    0    0    00 
Aug 17 01:27:39 hilbert kernel:  15 000 00  1    0    0   0   0    0    0    00 
Aug 17 01:27:39 hilbert kernel:  16 000 00  1    0    0   0   0    0    0    00 
Aug 17 01:27:39 hilbert kernel:  17 000 00  1    0    0   0   0    0    0    00 
Aug 17 01:27:40 hilbert crond: crond startup succeeded
Aug 17 01:27:39 hilbert kernel: .................................... done. 
Aug 17 01:27:39 hilbert kernel: mtrr: your CPUs had inconsistent fixed MTRR settings 
Aug 17 01:27:39 hilbert kernel: mtrr: probably your BIOS does not setup all CPUs 
...
Aug 17 01:32:51 hilbert kernel: eepro100.c:v1.09j 7/27/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html 
Aug 17 01:32:51 hilbert kernel: eth0: Intel PCI EtherExpress Pro100 at 0xc8831000, 00:90:27:57:13:FC, IRQ 11. 
Aug 17 01:32:51 hilbert kernel:   Receiver lock-up bug exists -- enabling work-around. 
Aug 17 01:32:51 hilbert kernel:   Board assembly 721383-006, Physical connectors present: RJ45 
Aug 17 01:32:51 hilbert kernel:   Primary interface chip i82555 PHY #1. 
Aug 17 01:32:51 hilbert kernel:   Forcing 10Mbs full-duplex operation. 
Aug 17 01:32:51 hilbert kernel:   General self-test: passed. 
Aug 17 01:32:51 hilbert kernel:   Serial sub-system self-test: passed. 
Aug 17 01:32:51 hilbert kernel:   Internal registers self-test: passed. 
Aug 17 01:32:51 hilbert kernel:   ROM checksum self-test: passed (0x04f4518b). 

mii-diag:
Using the default interface 'eth0'.
Basic registers of MII PHY #1:  3000 782d 02a8 0154 05e1 41e1 0001 0000.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner can do 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.

ifconfig:
eth0      Link encap:Ethernet  HWaddr 00:90:27:57:13:FC  
          inet addr:128.174.22.82  Bcast:128.174.23.255  Mask:255.255.254.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          Interrupt:11 Base address:0x1000 

eepro100-diag -aa: 
eepro100-diag.c:v1.01 7/8/99 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a Intel 82557 EtherExpressPro100B adapter at 0x8000.
i82557 chip registers at 0x8000:
  00000000 00000000 00000000 00080002 1821782d 00000000
  No interrupt sources are pending.
   The transmit unit state is 'Idle'.
   The receive unit state is 'Idle'.
  This status is unusual for an activated interface.

eepro100-diag -e:
eepro100-diag.c:v1.01 7/8/99 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a Intel 82557 EtherExpressPro100B adapter at 0x8000.
Intel EtherExpress Pro 10/100 EEPROM contents:
  Station address 00:90:27:57:13:FC.
  Board assembly 721383-006, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.

eepro-diag -m -f:
eepro100-diag.c:v1.01 7/8/99 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a Intel 82557 EtherExpressPro100B adapter at 0x8000.
 MII PHY #1 transceiver registers:
  3000 782d 02a8 0154 05e1 41e1 0001 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0a03 0000 0001 0000 0000 0000 0000 0000
  0000 0000 0b40 0000 0000 0000 0000 0000.