Thanks for the pointer to the MP spec; things make more sense now. I'm 99%
certain I have found a bug in my BIOS MP Configuration Table (which wouldn't
entirely surprise me I must admit). I hacked the kernel to dump out the "I/O
Interrupt Assignment" entries from the config table, and it looks like my BIOS
is forgetting to create an entry in the table for the bottom PCI slot, so the
code which fixes up PCI space to match the table never realized it had to fix
the entries for those dev:fn pairs (it so happens I have a multifunction device
in that slot). I hacked an extra entry into the mp_irqs[] array with the data I
thought should be there, and lo and behold it all works. One of these days I'll
flash my bios to the latest level and see if that fixes it, but I'm reluctant
to risk breaking the machine at the moment (OK, I'm paranoid).
It seems to me that it would be useful to be able to pass some extra MP config
table entries to the kernel on the command line to work around exactly this
sort of problem. I'll have to think about implementing it. In the case where
the command line is a simple addition to the table it should be pretty easy to
manage - just add some code to the bottom of smp_read_mpc(). Overriding
incorrect entries would be somewhat trickier. Comments?
Cheers,
David
-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/mentre/smp-faq/
To Unsubscribe: send "unsubscribe linux-smp" to [EMAIL PROTECTED]