Re: balance interrupts

From: Bob
Date: Mon Dec 08 2003 - 22:34:30 EST


Thanks Ken, I've learned from you.

Len Brown wrote:

Most IO-APIC systems have PCI interrupt lines hard-wired directly to
IO-APIC interrupt pins. If an interrupt isn't where you want it to be,
you need to physically move a card to another slot so that it gets a
different wire. A board with decent documentation will tell you what
slots get which interrupt wires.

Today basically all boards have also a PIRQ router that is used to map
these PCI interrupt wires down into PIC interrupt inputs for when the
system is in PIC compatibility mode (eg. when running the booter). Sometimes they can also re-map interrupt lines in IO-APIC mode.

Since your system is running in ACPI mode, the output of acpidmp is
needed to figure out exactly that the BIOS is saying the board can do.
The output of lspci -l with this will tell us if we can split apart the
SATA interrupts, or if they're wired together.

Another twist is that sometimes enabling/disabling devices in the BIOS
SETUP will change how the BIOS configures the hardware and make more
interrupts available.

MSI K7N2 MCP2-T, AMD xp3000+ 333mhz 1:1 clock
2.6.0-test11 pre-emptive, anticipatory, acpi, apic, lapic

The manual documents that two pairs of slots will share
irq's, one will not. Disabling devices can free up half a
dozen interrupts, but still only three will be used for the
five slots. I can change which three irq's; that's nothing.
No apic or acpi option or manual irq selection will do
anything but change which three interrupts are used
for pci slots, and nothing will change how many
onboard devices per irq, though again which irq
can be changed, but that's meaningless(if you can
hack a way, I'm not arguing!).

lspci -l doesn't work but here is a hex dump by lspci -vvv

3ware hd controller card with 4 drives is on interrupt 16
with a two-slot pcmcia controller, agp8 card always shares
interrupt with slot 5 if there is something in slot 5.
It's physically impossible to fit 3ware or pcmcia in
slot 3 which is the only one with its own interrupt
(agp has its own by not putting anything in slot 5!
X nvidia driver locks linux up, X nv works, this is
why I'm interested in potential conflicts).

-Bob

cat /proc/interrupts
CPU0 0: 65029245 IO-APIC-edge timer
1: 28681 IO-APIC-edge i8042
2: 0 XT-PIC cascade
8: 1 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 152616 IO-APIC-edge i8042
14: 22 IO-APIC-edge ide0
15: 24 IO-APIC-edge ide1
16: 715655 IO-APIC-level 3ware Storage Controller, yenta, yenta
17: 2170675 IO-APIC-level eth0
21: 0 IO-APIC-level NVidia nForce2
NMI: 0 [works if lilo append="nmi_watchdog=2"]
LOC: 65024840
ERR: 0
MIS: 0

00:00.0 Host bridge: nVidia Corporation: Unknown device 01e0 (rev c1)
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Region 0: Memory at d0000000 (32-bit, prefetchable) [size=128M]
Capabilities: [40] AGP version 3.0
Status: RQ=32 Iso- ArqSz=2 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3+ Rate=x4,x8
Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=x4
Capabilities: [60] #08 [2001]

00:00.1 RAM memory: nVidia Corporation: Unknown device 01eb (rev c1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:00.2 RAM memory: nVidia Corporation: Unknown device 01ee (rev c1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:00.3 RAM memory: nVidia Corporation: Unknown device 01ed (rev c1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:00.4 RAM memory: nVidia Corporation: Unknown device 01ec (rev c1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:00.5 RAM memory: nVidia Corporation: Unknown device 01ef (rev c1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:01.0 ISA bridge: nVidia Corporation nForce2 ISA Bridge (rev a3)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Capabilities: [48] #08 [01e1]

00:01.1 SMBus: nVidia Corporation nForce2 SMBus (MCP) (rev a2)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 23
Region 0: I/O ports at e800 [size=32]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:04.0 Ethernet controller: nVidia Corporation nForce2 Ethernet Controller (rev a1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 570c
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0 (250ns min, 5000ns max)
Interrupt: pin A routed to IRQ 20
Region 0: Memory at e5083000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at ec00 [size=8]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:05.0 Multimedia audio controller: nVidia Corporation nForce MultiMedia audio [Via VT82C686B] (rev a2)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0 (250ns min, 3000ns max)
Interrupt: pin A routed to IRQ 22
Region 0: Memory at e5000000 (32-bit, non-prefetchable) [size=512K]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:06.0 Multimedia audio controller: nVidia Corporation nForce2 AC97 Audio Controler (MCP) (rev a1)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0 (500ns min, 1250ns max)
Interrupt: pin A routed to IRQ 21
Region 0: I/O ports at e000 [size=256]
Region 1: I/O ports at e400 [size=128]
Region 2: Memory at e5080000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:08.0 PCI bridge: nVidia Corporation: Unknown device 006c (rev a3) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Bus: primary=00, secondary=01, subordinate=03, sec-latency=32
I/O behind bridge: 00009000-0000cfff
Memory behind bridge: e3000000-e4ffffff
Prefetchable memory behind bridge: fff00000-000fffff
BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-

00:09.0 IDE interface: nVidia Corporation nForce2 IDE (rev a2) (prog-if 8a [Master SecP PriP])
Subsystem: Micro-Star International Co., Ltd.: Unknown device 5700
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0 (750ns min, 250ns max)
Region 4: I/O ports at f000 [size=16]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:1e.0 PCI bridge: nVidia Corporation nForce2 AGP (rev c1) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32
Bus: primary=00, secondary=05, subordinate=05, sec-latency=32
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: e1000000-e2ffffff
Prefetchable memory behind bridge: d8000000-dfffffff
BridgeCtl: Parity- SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B-

01:07.0 RAID bus controller: 3ware Inc 3ware 7000-series ATA-RAID (rev 01)
Subsystem: 3ware Inc 3ware 7000-series ATA-RAID
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (2250ns min), cache line size 08
Interrupt: pin A routed to IRQ 16
Region 0: I/O ports at 9000 [size=16]
Region 1: Memory at e482c000 (32-bit, non-prefetchable) [size=16]
Region 2: Memory at e4000000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at <unassigned> [disabled] [size=64K]
Capabilities: [40] Power Management version 1
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

01:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Subsystem: Realtek Semiconductor Co., Ltd. RT8139
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (8000ns min, 16000ns max)
Interrupt: pin A routed to IRQ 17
Region 0: I/O ports at 9400 [size=256]
Region 1: Memory at e4820000 (32-bit, non-prefetchable) [size=256]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

01:0a.0 CardBus bridge: ENE Technology Inc CB1420 Cardbus Controller (rev 01)
Subsystem: Unknown device 414e:454c
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 168, cache line size 10
Interrupt: pin A routed to IRQ 16
Region 0: Memory at e4821000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=01, secondary=02, subordinate=05, sec-latency=176
Memory window 0: e4822000-e4823000 (prefetchable)
Memory window 1: e4824000-e4825000
I/O window 0: 00009800-000098ff
I/O window 1: 0000a000-0000a403
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+
16-bit legacy interface ports at 0001

01:0a.1 CardBus bridge: ENE Technology Inc CB1420 Cardbus Controller (rev 01)
Subsystem: Unknown device 414e:454c
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 168, cache line size 10
Interrupt: pin A routed to IRQ 16
Region 0: Memory at e4826000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=01, secondary=06, subordinate=09, sec-latency=176
Memory window 0: e4827000-e4828000 (prefetchable)
Memory window 1: e4829000-e482a000
I/O window 0: 00009c00-00009cff
I/O window 1: 0000b000-0000b403
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+
16-bit legacy interface ports at 0001

01:0b.0 RAID bus controller: Promise Technology, Inc. PDC20376 (rev 02)
Subsystem: Promise Technology, Inc.: Unknown device 6620
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 96 (1000ns min, 4500ns max), cache line size 08
Interrupt: pin A routed to IRQ 18
Region 0: I/O ports at b800 [size=64]
Region 1: I/O ports at bc00 [size=16]
Region 2: I/O ports at c000 [size=128]
Region 3: Memory at e482b000 (32-bit, non-prefetchable) [size=4K]
Region 4: Memory at e4800000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

05:00.0 VGA compatible controller: nVidia Corporation NV28 [GeForce4 Ti 4200 AGP 8x] (rev a1) (prog-if 00 [VGA])
Subsystem: ABIT Computer Corp.: Unknown device 8f11
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (1250ns min, 250ns max)
Interrupt: pin A routed to IRQ 19
Region 0: Memory at e1000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at d8000000 (32-bit, prefetchable) [size=128M]
Expansion ROM at <unassigned> [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [44] AGP version 3.0
Status: RQ=32 Iso- ArqSz=0 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3+ Rate=x4,x8
Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/