<div dir="ltr">Hi,<div><br></div><div>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.</div><div><br></div><div>When I boot Linux under the <i>vendor bios</i> with apic debugging enabled, I can see that I have two IOAPICs-</div><div><br></div><div><div>[    0.000000] IOAPIC[0]: apic_id 4, version 17, address 0xfec00000, GSI 0-23</div><div>[    0.000000] IOAPIC[1]: apic_id 5, version 17, address 0xb0400000, GSI 24-47</div></div><div><br></div><div>And, when I boot using Coreboot<i>,</i> I have only one-</div><div><br></div><div>[    0.000000] IOAPIC[0]: apic_id 5, version 17, address 0xf4340000, GSI 0-23<br></div><div><br></div><div>Now, I'm sure this output is coming from the MP Table which Linux is reading back.</div><div><br></div><div>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.</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font size="1">get_bus_conf();</font></div></div><div><div><font size="1">sbdn = sysconf.sbdn;</font></div></div><div><div><font size="1">m = sysconf.mb;</font></div></div></blockquote><div><font size="1"><br></font></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font size="1">dev = dev_find_slot(m->bus_mcp55, PCI_DEVFN(sbdn+ 0x1,0));</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">           </span>if (dev) {</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">                      </span>res = find_resource(dev, PCI_BASE_ADDRESS_1);</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">                   </span>if (res)</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">                                </span>smp_write_ioapic(mc, m->apicid_mcp55, 0x11, res->base);</font></div></div></blockquote><div><font size="1"><br></font></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font size="1">if (m->bus_mcp55b) {</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">              </span>dev = dev_find_slot(m->bus_mcp55b, PCI_DEVFN(m->sbdnb + 0x1,0));</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">          </span>if (dev) {</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">                      </span>res = find_resource(dev, PCI_BASE_ADDRESS_1);</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">                   </span>if (res)</font></div></div><div><div><font size="1"><span class="" style="white-space:pre">                                </span>smp_write_ioapic(mc, m->apicid_mcp55b, 0x11, res->base);</font></div></div><div><br></div></blockquote>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?<div><br></div><div>Here's a full output from Coreboot and the Linux kernel(apic=debug show_lapic=all): <i><a href="http://pastebin.com/PMVtt6hU">http://pastebin.com/PMVtt6hU</a></i></div><div><br></div><div>Here's Linux kernel output from the vendor bios:<i> <a href="http://pastebin.com/VscyMxM2">http://pastebin.com/VscyMxM2</a></i> (MPTable @ line 110.)</div><div><br></div><div>Thanks in advance!</div><div><br></div><div>-Nick</div><div><br></div><div><br></div></div>