mbertens wrote:
> +++ src/arch/i386/boot/pirq_routing.c (working copy)
> @@ -121,7 +121,11 @@
>  
>                       printk(BIOS_DEBUG, "INT: %c link: %x bitmap: %x  ",
>                               'A' + j, link, bitmap);
> -
> +                     // fix made by Marc Bertens <[email protected]>
> +                     if (link > 0x5f) {
> +                             // This is basically for the 440BX
> +                             link -= 0x5f;
> +                     }

Um, except that I gave you that code.

It is a bit of a hack. So far this file and function is actually only
called by Geode LX mainboards, and I don't quite understand why.

Maybe something equivalent of this code is invoked in other ways in
all the other boards? The gist of pirq_routing_irqs() is to call
pci_assign_irqs() and pirq_assign_irqs(). How 

There are various other solutions to calling pci_assign_irqs() on
other boards:

northbridge/via/cx700/cx700_lpc.c
northbridge/via/vx800/vx800_lpc.c
southbridge/via/vt8231/vt8231_lpc.c
southbridge/via/vt8235/vt8235_lpc.c
southbridge/via/vt8237r/vt8237r_lpc.c
mainboard/amd/serengeti/cheetah/irq_tables.c
mainboard/msi/ms7135/irq_tables.c
mainboard/olpc/btest/mainboard.c
mainboard/tyan/s2882/irq_tables.c
mainboard/iwill/dk8_htx/irq_tables.c
mainboard/emulation/qemu-x86/mainboard.c
mainboard/technologic/ts5300/mainboard.c
mainboard/digitallogic/msm586seg/mainboard.c

I have fairly strong opinion about those call sites being so
different (maybe due to ignorance) but more importantly what are the
other boards doing? There seems to be a large number of non-Geode
systems not in the list above where pci_assign_irqs() is never
called. The doxygen for the function says:

"This function should be called for each PCI slot in your system."

What gives? Can we find a generic solution to this interrupt problem?


//Peter

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to