Hi,
I'm looking for a little advice (or steering in the right direction) in regards to IOAPICs and how Coreboot manages detection. I have two MCP-55 chipsets just like the nVidia l1_2pvv board.
When I boot Linux under the *vendor bios* with apic debugging enabled, I can see that I have two IOAPICs-
[ 0.000000] IOAPIC[0]: apic_id 4, version 17, address 0xfec00000, GSI 0-23 [ 0.000000] IOAPIC[1]: apic_id 5, version 17, address 0xb0400000, GSI 24-47
And, when I boot using Coreboot*,* I have only one-
[ 0.000000] IOAPIC[0]: apic_id 5, version 17, address 0xf4340000, GSI 0-23
Now, I'm sure this output is coming from the MP Table which Linux is reading back.
In mptable.c a lot of the MCP-55 boards share this detection code for building the MP Table. Mine will only enter the if statement for bus_mcp55b.
get_bus_conf(); sbdn = sysconf.sbdn; m = sysconf.mb;
dev = dev_find_slot(m->bus_mcp55, PCI_DEVFN(sbdn+ 0x1,0)); if (dev) { res = find_resource(dev, PCI_BASE_ADDRESS_1); if (res) smp_write_ioapic(mc, m->apicid_mcp55, 0x11, res->base);
if (m->bus_mcp55b) { dev = dev_find_slot(m->bus_mcp55b, PCI_DEVFN(m->sbdnb + 0x1,0)); if (dev) { res = find_resource(dev, PCI_BASE_ADDRESS_1); if (res) smp_write_ioapic(mc, m->apicid_mcp55b, 0x11, res->base);
So, my question is - what is responsible for detecting the IOAPICs? Is there some configuration somewhere which I may be missing? Any tips for where to look?
Here's a full output from Coreboot and the Linux kernel(apic=debug show_lapic=all): *http://pastebin.com/PMVtt6hU http://pastebin.com/PMVtt6hU*
Here's Linux kernel output from the vendor bios:* http://pastebin.com/VscyMxM2 http://pastebin.com/VscyMxM2* (MPTable @ line 110.)
Thanks in advance!
-Nick