[LinuxBIOS] IRQ problem
Thomas Ekstrand
thomas.ekstrand at gmail.com
Thu May 24 13:46:03 CEST 2007
Hi!
I have trouble getting some Interrupts. I have used getpir to create a
irq_tables.c but I get a warning message during startup:
"Inconsistent IRQ routing table size (0xd0/0xc0)"
mainly it is the network interfaces that does not work. It feels like
i have missed a leap in the IRQ configuration. I have not yet been
able to understand the importance and use of the mptable.c for IRQ
configuration, is this my source of trouble?
I've attached some output when booted from linuxbios and the created
irq_tables.c in use.
linuxbios also fail to map the tg3 net interfaces through MSI which
the standard bios does, but it maps the intel net interfaces through
MSI... how come?
Thanks for any help!
/Thomas
-------------- next part --------------
cat /proc/interrupts
CPU0 CPU1
0: 441647 3902 IO-APIC-edge timer
2: 0 0 XT-PIC cascade
4: 966 0 IO-APIC-edge serial
8: 0 0 IO-APIC-edge rtc
10: 629 0 IO-APIC-level ehci_hcd:usb1
14: 8 0 IO-APIC-edge ide0
15: 0 0 IO-APIC-level libata
50: 0 0 IO-APIC-level eth0
58: 0 0 IO-APIC-level eth1
114: 0 0 PCI-MSI eth2
122: 0 0 PCI-MSI eth3
161: 0 0 IO-APIC-level eth4
NMI: 483 77
LOC: 442107 444806
ERR: 0
MIS: 0
-------------- next part --------------
lspci
00:01.0 Class : 0604 : 1166 : 0036
00:02.0 Class : 0600 : 1166 : 0205
00:02.1 Class : 0101 : 1166 : 0214
00:02.2 Class : 0601 : 1166 : 0234
00:02.3 Class : 0880 : 1166 : 0238 (rev 01)
00:02.4 Class : 0800 : 1166 : 0235
00:02.5 Class : 0800 : 1166 : 0235
00:02.6 Class : 0800 : 1166 : 0235
00:03.0 Class : 0c03 : 1166 : 0223 (rev 01)
00:03.1 Class : 0c03 : 1166 : 0223 (rev 01)
00:03.2 Class : 0c03 : 1166 : 0223 (rev 01)
00:04.0 Class : 0200 : 8086 : 1209 (rev 10)
00:06.0 Class : 0604 : 1166 : 0130 (rev a3)
00:07.0 Class : 0604 : 1166 : 0130 (rev a3)
00:08.0 Class : 0604 : 1166 : 0132 (rev a3)
00:09.0 Class : 0604 : 1166 : 0132 (rev a3)
00:0a.0 Class : 0604 : 1166 : 0132 (rev a3)
00:0b.0 Class : 0604 : 1166 : 0132 (rev a3)
00:18.0 Class : 0600 : 1022 : 1100
00:18.1 Class : 0600 : 1022 : 1101
00:18.2 Class : 0600 : 1022 : 1102
00:18.3 Class : 0600 : 1022 : 1103
01:0d.0 Class : 0604 : 1166 : 0104 (rev c0)
01:0e.0 Class : 0104 : 1166 : 024a
01:0e.1 Class : 0104 : 1166 : 024a
04:04.0 Class : 0200 : 14e4 : 166a (rev 03)
04:04.1 Class : 0200 : 14e4 : 166a (rev 03)
07:00.0 Class : 0200 : 8086 : 105e (rev 06)
07:00.1 Class : 0200 : 8086 : 105e (rev 06)
-------------- next part --------------
lspci -v
00:01.0 Class 0604: 1166:0036
Flags: bus master, fast devsel, latency 64
Bus: primary=00, secondary=01, subordinate=02, sec-latency=64
I/O behind bridge: 00001000-00001fff
Memory behind bridge: fc000000-fc0fffff
Prefetchable memory behind bridge: 0000000088000000-0000000088000000
Capabilities: [90] PCI-X bridge device
Capabilities: [a0] HyperTransport: MSI Mapping
Capabilities: [b0] HyperTransport: Slave or Primary Interface
Capabilities: [d8] #0d [0000]
00:02.0 Class 0600: 1166:0205
Subsystem: 161f:3050
Flags: bus master, medium devsel, latency 64
00:02.1 Class 0101: 1166:0214 (prog-if 8a)
Subsystem: 1166:0214
Flags: medium devsel
I/O ports at <ignored>
I/O ports at <ignored>
I/O ports at <ignored>
I/O ports at <ignored>
I/O ports at 3c70 [size=16]
00:02.2 Class 0601: 1166:0234
Subsystem: 1166:0230
Flags: bus master, medium devsel, latency 0
00:02.3 Class 0880: 1166:0238 (rev 01)
Subsystem: 161f:3050
Flags: medium devsel
Memory at fc320000 (32-bit, non-prefetchable) [size=4K]
00:02.4 Class 0800: 1166:0235 (prog-if 20)
Subsystem: 161f:3050
Flags: bus master, medium devsel, latency 0
Memory at fc321000 (32-bit, non-prefetchable) [size=4K]
00:02.5 Class 0800: 1166:0235 (prog-if 20)
Subsystem: 161f:3050
Flags: bus master, medium devsel, latency 0
Memory at fc322000 (32-bit, non-prefetchable) [size=4K]
00:02.6 Class 0800: 1166:0235 (prog-if 20)
Subsystem: 161f:3050
Flags: bus master, medium devsel, latency 0
Memory at fc323000 (32-bit, non-prefetchable) [size=4K]
00:03.0 Class 0c03: 1166:0223 (rev 01) (prog-if 10)
Subsystem: 1166:0223
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 10
Memory at fc324000 (32-bit, non-prefetchable) [size=4K]
I/O ports at 3000 [size=256]
Capabilities: [dc] Power Management version 2
00:03.1 Class 0c03: 1166:0223 (rev 01) (prog-if 10)
Subsystem: 1166:0223
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 10
Memory at fc325000 (32-bit, non-prefetchable) [size=4K]
I/O ports at 3400 [size=256]
Capabilities: [dc] Power Management version 2
00:03.2 Class 0c03: 1166:0223 (rev 01) (prog-if 20)
Subsystem: 1166:0223
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 10
Memory at fc326000 (32-bit, non-prefetchable) [size=4K]
I/O ports at 3800 [size=256]
Capabilities: [dc] Power Management version 2
00:04.0 Class 0200: 8086:1209 (rev 10)
Subsystem: 14d0:1229
Flags: bus master, medium devsel, latency 64, IRQ 161
Memory at fc327000 (32-bit, non-prefetchable) [size=4K]
I/O ports at 3c00 [size=64]
Memory at fc300000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [dc] Power Management version 2
00:06.0 Class 0604: 1166:0130 (rev a3)
Flags: bus master, fast devsel, latency 64
Bus: primary=00, secondary=03, subordinate=03, sec-latency=64
Capabilities: [90] PCI-X bridge device
Capabilities: [a0] HyperTransport: MSI Mapping
Capabilities: [b0] HyperTransport: Slave or Primary Interface
00:07.0 Class 0604: 1166:0130 (rev a3)
Flags: bus master, fast devsel, latency 64
Bus: primary=00, secondary=04, subordinate=04, sec-latency=64
Memory behind bridge: fc100000-fc1fffff
Capabilities: [90] PCI-X bridge device
Capabilities: [a0] HyperTransport: MSI Mapping
00:08.0 Class 0604: 1166:0132 (rev a3)
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=05, subordinate=05, sec-latency=64
Capabilities: [a0] HyperTransport: MSI Mapping
Capabilities: [b0] Express Root Port (Slot-) IRQ 0
00:09.0 Class 0604: 1166:0132 (rev a3)
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=06, subordinate=06, sec-latency=64
Capabilities: [a0] HyperTransport: MSI Mapping
Capabilities: [b0] Express Root Port (Slot-) IRQ 0
00:0a.0 Class 0604: 1166:0132 (rev a3)
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=07, subordinate=07, sec-latency=64
I/O behind bridge: 00002000-00002fff
Memory behind bridge: fc200000-fc2fffff
Capabilities: [a0] HyperTransport: MSI Mapping
Capabilities: [b0] Express Root Port (Slot-) IRQ 0
00:0b.0 Class 0604: 1166:0132 (rev a3)
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=08, subordinate=08, sec-latency=64
Capabilities: [a0] HyperTransport: MSI Mapping
Capabilities: [b0] Express Root Port (Slot-) IRQ 0
00:18.0 Class 0600: 1022:1100
Flags: fast devsel
Capabilities: [80] HyperTransport: Host or Secondary Interface
Capabilities: [a0] HyperTransport: Host or Secondary Interface
Capabilities: [c0] HyperTransport: Host or Secondary Interface
00:18.1 Class 0600: 1022:1101
Flags: fast devsel
00:18.2 Class 0600: 1022:1102
Flags: fast devsel
00:18.3 Class 0600: 1022:1103
Flags: fast devsel
01:0d.0 Class 0604: 1166:0104 (rev c0)
Flags: bus master, 66MHz, medium devsel, latency 64
Bus: primary=01, secondary=02, subordinate=02, sec-latency=64
Capabilities: [90] PCI-X bridge device
Capabilities: [88] #0d [0000]
01:0e.0 Class 0104: 1166:024a (prog-if 80)
Subsystem: 1166:0242
Flags: bus master, medium devsel, latency 64, IRQ 15
I/O ports at 1030 [size=8]
I/O ports at 1070 [size=4]
I/O ports at 1040 [size=8]
I/O ports at 1080 [size=4]
I/O ports at 1000 [size=32]
Memory at fc000000 (32-bit, non-prefetchable) [size=8K]
[virtual] Expansion ROM at 88000000 [disabled] [size=128K]
Capabilities: [60] PCI-X non-bridge device
Capabilities: [90] Power Management version 2
Capabilities: [a0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable
-
01:0e.1 Class 0104: 1166:024a (prog-if 8f)
Subsystem: 1166:0242
Flags: 66MHz, medium devsel, IRQ 15
I/O ports at 1050 [size=8]
I/O ports at 1090 [size=4]
I/O ports at 1060 [size=8]
I/O ports at 10a0 [size=4]
I/O ports at 1020 [size=16]
Capabilities: [60] PCI-X non-bridge device
Capabilities: [90] Power Management version 2
Capabilities: [a0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable
-
04:04.0 Class 0200: 14e4:166a (rev 03)
Subsystem: 14e4:166a
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 50
Memory at fc100000 (64-bit, non-prefetchable) [size=64K]
Memory at fc110000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] PCI-X non-bridge device
Capabilities: [48] Power Management version 2
Capabilities: [50] Vital Product Data
Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable
-
04:04.1 Class 0200: 14e4:166a (rev 03)
Subsystem: 14e4:166a
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 58
Memory at fc120000 (64-bit, non-prefetchable) [size=64K]
Memory at fc130000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] PCI-X non-bridge device
Capabilities: [48] Power Management version 2
Capabilities: [50] Vital Product Data
Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable
-
07:00.0 Class 0200: 8086:105e (rev 06)
Subsystem: 14d0:0800
Flags: bus master, fast devsel, latency 0, IRQ 114
Memory at fc200000 (32-bit, non-prefetchable) [size=128K]
I/O ports at 2000 [size=32]
Expansion ROM at fc220000 [disabled] [size=128K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable
+
Capabilities: [e0] Express Endpoint IRQ 0
07:00.1 Class 0200: 8086:105e (rev 06)
Subsystem: 14d0:0800
Flags: bus master, fast devsel, latency 0, IRQ 122
Memory at fc240000 (32-bit, non-prefetchable) [size=128K]
I/O ports at 2020 [size=32]
Expansion ROM at fc260000 [disabled] [size=128K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable
+
Capabilities: [e0] Express Endpoint IRQ 0
-------------- next part --------------
/* This file was generated by getpir.c, do not modify!
(but if you do, please run checkpir on it to verify)
* Contains the IRQ Routing Table dumped directly from your memory, which BIOS sets up
*
* Documentation at : http://www.microsoft.com/hwdev/busbios/PCIIRQ.HTM
*/
#ifdef GETPIR
#include "pirq_routing.h"
#else
#include <arch/pirq_routing.h>
#endif
const struct irq_routing_table intel_irq_routing_table = {
PIRQ_SIGNATURE, /* u32 signature */
PIRQ_VERSION, /* u16 version */
32+16*10, /* there can be total 10 devices on the bus */
0x00, /* Where the interrupt router lies (bus) */
(0x02<<3)|0x0, /* Where the interrupt router lies (dev) */
0, /* IRQs devoted exclusively to PCI usage */
0x1166, /* Vendor */
0x36, /* Device */
0, /* Crap (miniport) */
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
0x51, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
{
/* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
{0x01,(0x0e<<3)|0x0, {{0x07, 0x0800}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x00,(0x03<<3)|0x0, {{0x01, 0x0400}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x04,(0x04<<3)|0x0, {{0x22, 0xdefa}, {0x23, 0xdefa}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x00,(0x04<<3)|0x0, {{0x21, 0xdefa}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x02,(0x04<<3)|0x0, {{0x20, 0xdefa}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x07,(0x00<<3)|0x0, {{0x26, 0xdefa}, {0x26, 0xdefa}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x05,(0x00<<3)|0x0, {{0x25, 0xdefa}, {0x25, 0xdefa}, {0x25, 0xdefa}, {0x25, 0x0defa}}, 0x1, 0x0},
{0x06,(0x00<<3)|0x0, {{0x24, 0xdefa}, {0x24, 0xdefa}, {0x24, 0xdefa}, {0x24, 0x0defa}}, 0x1, 0x0},
{0x08,(0x00<<3)|0x0, {{0x27, 0xdefa}, {0x27, 0xdefa}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0},
{0x00,(0x05<<3)|0x0, {{0x28, 0xdefa}, {0x29, 0xdefa}, {0x2a, 0xdefa}, {0x2b, 0x0defa}}, 0x1, 0x0},
}
};
unsigned long write_pirq_routing_table(unsigned long addr)
{
return copy_pirq_routing_table(addr);
}
More information about the coreboot
mailing list