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

