[LinuxBIOS] Missing IRQ table entries; irq_tables.c problem?
Jonathan Sturges
jonathansturges at yahoo.com
Sun Sep 16 21:31:09 CEST 2007
Hi,
I'm missing something obvious and need someone to point me in the right direction.
I'm finishing up mapping IRQs on a CS5530 winterminal board I've got. I know the IRQ mappings of each on-board device and slot, and I put together my irq_tables.c accordingly. However, only the first 2 entries get written to the IRQ table, even though the file designates 3. Then, when I boot the LB image, I get this warning:
Inconsistent IRQ routing table size (0x40/0x50)
The 0x50 makes sense; that's the "32+16*3" from my irq_tables.c. But where is the size being set to 0x40? It seems there's a configuration I missed somewhere.
My irq_tables.c is below.
thanks,
Jonathan
/* 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
*/
#include <arch/pirq_routing.h>
const struct irq_routing_table intel_irq_routing_table = {
PIRQ_SIGNATURE, /* u32 signature */
PIRQ_VERSION, /* u16 version */
32+16*3, /* there can be total 3 devices on the bus */
0x00, /* Where the interrupt router lies (bus) */
(0x12<<3)|0x0, /* Where the interrupt router lies (dev) */
0x0e00, /* IRQs devoted exclusively to PCI usage */
0x1078, /* Vendor */
0x0100, /* Device */
0, /* Crap (miniport) */
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
0x21, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
/* 0x13 = on-board USB OHCI; 0x15 = on-board NatSemi ethernet; 0x14 = miniPCI */
{
/* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
{0x00,(0x13<<3)|0x0, {{0x01, 0x0400}, {0x02, 0x0800}, {0x03, 0x0200}, {0x04, 0x0000}}, 0x0, 0x0},
{0x00,(0x15<<3)|0x0, {{0x02, 0x0800}, {0x03, 0x0200}, {0x04, 0x0000}, {0x01, 0x0400}}, 0x0, 0x0},
{0x00,(0x14<<3)|0x0, {{0x03, 0x0200}, {0x04, 0x0000}, {0x01, 0x0400}, {0x02, 0x0800}}, 0x0, 0x0},
}
};
unsigned long write_pirq_routing_table(unsigned long addr)
{
return copy_pirq_routing_table(addr);
}
____________________________________________________________________________________
Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
http://farechase.yahoo.com/
More information about the coreboot
mailing list