2003-01-21 16:08:59

by David Mansfield

[permalink] [raw]
Subject: ACPI munges IRQ routing in 2.5.58 on HP3000 U3 (fwd)


Hi Andrew, lists,

(2.5.59 has the same problem, I've just tested)

After extensive help from Justin Gibbs (the aic7xxx driver maintainer)
I've determined that the reason the SCSI subsystem fails in 2.5.58 is that
the IRQ routing setup by ACPI is wrong. Quoting Justin after sending him
verbose debugging from his driver:

<quote>
The output has confirmed what I had suspected. The card is not
getting interrupts. My guess is that some change in the interrupt
routine code in 2.5.X is not working correctly on your system. To
completely verify that, you could try dropping in 6.2.27 into a
2.4.20aa2 kernel.
[snip] You might also try to influence interrupt routing in your
system by playing around with the "apic" and "acpi" kernel options.
</quote>

I didn't try 2.4, but *did* try booting with pci=noacpi which solved the
problem for me.

I've attached the bootup log with and without the pci=noacpi option
(gzipped) so you can see the differences.

Here's the relevant 'diff' of the two files:

--- tarsierx-bootlog.txt 2003-01-16 16:02:10.000000000 -0500
+++ tarsierx-bootlog-noacpi.txt 2003-01-20 16:53:27.000000000 -0500
@@ -47,10 +47,10 @@
ACPI: INT_SRC_OVR (bus[0] irq[0xb] global_irq[0xb] polarity[0x3] trigger[0x3])
Using ACPI (MADT) for SMP configuration information
Building zonelist for node : 0
-Kernel command line: ro root=/dev/md2 console=ttyS0,9600n8
+Kernel command line: ro root=/dev/md2 pci=noacpi
Initializing CPU#0
PID hash table entries: 4096 (order 12: 32768 bytes)
-Detected 866.414 MHz processor.
+Detected 866.689 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 1712.12 BogoMIPS
Memory: 2071476k/2097088k available (2368k kernel code, 24480k reserved, 718k data, 320k init, 1179584k highmem)
@@ -62,6 +62,7 @@
-> /root
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
+CPU: After generic, caps: 0383fbff 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Enabling fast FPU save and restore... done.
@@ -79,25 +80,105 @@
masked ExtINT on CPU#1
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
-Calibrating delay loop... 1728.51 BogoMIPS
+Calibrating delay loop... 1732.60 BogoMIPS
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
+CPU: After generic, caps: 0383fbff 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel Pentium III (Coppermine) stepping 06
-Total of 2 processors activated (3440.64 BogoMIPS).
+Total of 2 processors activated (3444.73 BogoMIPS).
ENABLING IO-APIC IRQs
+init IO_APIC IRQs
+ IO-APIC (apicid-pin) 2-0, 2-2, 3-0, 3-1, 3-2, 3-3, 3-4, 3-5, 3-6, 3-7, 3-8, 3-9, 3-10, 3-11, 3-12, 3-13, 3-14, 3-15 not connected.
..TIMER: vector=0x31 pin1=-1 pin2=0
...trying to set up timer (IRQ0) through the 8259A ...
..... (found pin 0) ...works.
+number of MP IRQ sources: 15.
+number of IO-APIC #2 registers: 16.
+number of IO-APIC #3 registers: 16.
testing the IO APIC.......................

+IO APIC #2......
+.... register #00: 02000000
+....... : physical APIC id: 02
+....... : Delivery Type: 0
+....... : LTS : 0
+.... register #01: 000F0011
+....... : max redirection entries: 000F
+....... : PRQ implemented: 0
+....... : IO APIC version: 0011
+.... register #02: 00000000
+....... : arbitration: 00
+.... IRQ redirection table:
+ NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
+ 00 001 01 0 0 0 0 0 1 1 31
+ 01 001 01 0 0 0 0 0 1 1 39
+ 02 000 00 1 0 0 0 0 0 0 00
+ 03 001 01 0 0 0 0 0 1 1 41
+ 04 001 01 0 0 0 0 0 1 1 49
+ 05 001 01 1 1 0 1 0 1 1 51
+ 06 001 01 0 0 0 0 0 1 1 59
+ 07 001 01 0 0 0 0 0 1 1 61
+ 08 001 01 0 0 0 0 0 1 1 69
+ 09 001 01 1 1 0 1 0 1 1 71
+ 0a 001 01 1 1 0 1 0 1 1 79
+ 0b 001 01 1 1 0 1 0 1 1 81
+ 0c 001 01 0 0 0 0 0 1 1 89
+ 0d 001 01 0 0 0 0 0 1 1 91
+ 0e 001 01 0 0 0 0 0 1 1 99
+ 0f 001 01 0 0 0 0 0 1 1 A1

+IO APIC #3......
+.... register #00: 03000000
+....... : physical APIC id: 03
+....... : Delivery Type: 0
+....... : LTS : 0
+.... register #01: 000F0011
+....... : max redirection entries: 000F
+....... : PRQ implemented: 0
+....... : IO APIC version: 0011
+.... register #02: 0F000000
+....... : arbitration: 0F
+.... IRQ redirection table:
+ NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
+ 00 000 00 1 0 0 0 0 0 0 00
+ 01 000 00 1 0 0 0 0 0 0 00
+ 02 000 00 1 0 0 0 0 0 0 00
+ 03 000 00 1 0 0 0 0 0 0 00
+ 04 000 00 1 0 0 0 0 0 0 00
+ 05 000 00 1 0 0 0 0 0 0 00
+ 06 000 00 1 0 0 0 0 0 0 00
+ 07 000 00 1 0 0 0 0 0 0 00
+ 08 000 00 1 0 0 0 0 0 0 00
+ 09 000 00 1 0 0 0 0 0 0 00
+ 0a 000 00 1 0 0 0 0 0 0 00
+ 0b 000 00 1 0 0 0 0 0 0 00
+ 0c 000 00 1 0 0 0 0 0 0 00
+ 0d 000 00 1 0 0 0 0 0 0 00
+ 0e 000 00 1 0 0 0 0 0 0 00
+ 0f 000 00 1 0 0 0 0 0 0 00
+IRQ to pin mappings:
+IRQ0 -> 0:0
+IRQ1 -> 0:1
+IRQ3 -> 0:3
+IRQ4 -> 0:4
+IRQ5 -> 0:5
+IRQ6 -> 0:6
+IRQ7 -> 0:7
+IRQ8 -> 0:8
+IRQ9 -> 0:9
+IRQ10 -> 0:10
+IRQ11 -> 0:11
+IRQ12 -> 0:12
+IRQ13 -> 0:13
+IRQ14 -> 0:14
+IRQ15 -> 0:15
.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
-..... CPU clock speed is 866.0131 MHz.
-..... host bus clock speed is 133.0250 MHz.
+..... CPU clock speed is 866.0108 MHz.
+..... host bus clock speed is 133.0247 MHz.
checking TSC synchronization across 2 CPUs: passed.
Starting migration thread for cpu 0
Bringing up 1
@@ -126,6 +207,7 @@
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
+ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKU] (IRQs 5, disabled)
ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 7 10 11 12 14 15, enabled at IRQ 9)
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 *10 11 12 14 15)
@@ -145,6 +227,8 @@
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 10 11 12 14 15, disabled)
ACPI: PCI Root Bridge [PCI1] (00:03)
PCI: Probing PCI hardware (bus 03)
+ACPI: PCI Interrupt Routing Table [\_SB_.PCI1._PRT]
+ACPI: PCI Interrupt Routing Table [\_SB_.PCI1.PCI2._PRT]
block request queues:
128 requests per read queue
128 requests per write queue
@@ -152,19 +236,15 @@
enter congestion at 15
exit congestion at 17
SCSI subsystem driver Revision: 1.00
-ACPI: PCI Interrupt Link [LNKU] enabled at IRQ 5
-ACPI: PCI Interrupt Link [LNK6] enabled at IRQ 11
-ACPI: PCI Interrupt Link [LNK7] enabled at IRQ 10
-ACPI: PCI Interrupt Link [LNK8] enabled at IRQ 11
-ACPI: PCI Interrupt Link [LNK9] enabled at IRQ 10
-ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
-ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
-ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
-ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
-ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 10
-ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 5
-PCI: Using ACPI for IRQ routing
-PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
+PCI: Probing PCI hardware
+PCI: Using IRQ router ServerWorks [1166/0200] at 00:0f.0
+PCI BIOS passed nonexistent PCI bus 0!
+PCI BIOS passed nonexistent PCI bus 0!
+PCI BIOS passed nonexistent PCI bus 3!
+PCI BIOS passed nonexistent PCI bus 3!
+PCI BIOS passed nonexistent PCI bus 3!
+PCI BIOS passed nonexistent PCI bus 4!
+PCI BIOS passed nonexistent PCI bus 3!
SBF: ACPI BOOT descriptor is wrong length (39)
SBF: Simple Boot Flag extension found and enabled.
SBF: Setting boot flags 0x80
@@ -191,6 +271,7 @@
Intel(R) PRO/100 Network Driver - version 2.1.29-k1
Copyright (c) 2002 Intel Corporation

+e100: selftest OK.
Freeing alive device f7f15000, eth%d
e100: eth0: Intel(R) 8255x-based Ethernet Adapter
Hardware receive checksums enabled
@@ -216,63 +297,157 @@
<Adaptec aic7880 Ultra SCSI adapter>
aic7880: Ultra Wide Channel A, SCSI Id=7, 16/253 SCBs

At this point SCSI either fails or works depending...
David

--
/==============================\
| David Mansfield |
| [email protected] |
\==============================/




Attachments:
tarsierx-bootlog.txt.gz (4.39 kB)
tarsierx-bootlog-noacpi.txt.gz (6.32 kB)
Download all attachments