[coreboot] MP table multicore patch

Timothy Pearson tpearson at raptorengineeringinc.com
Wed Feb 24 08:26:41 CET 2010

> So two more steps are necessary:
> - check all the downwards links of a device instead of just walking devices
> and checking their type.
> - run recursively in a special case on APIC clusters.
> This sounds a whole lot like something changed in the way "all_devices"
> works. And if "all_devices" does not mean "all devices" I am sure there are
> more places in our code that need similar fixes.

This is the crux of the issue.  all_devices does NOT mean "all devices",
it means "all devices attached to the root node, which is all_devices". 
As the root node, usually the PCI bus and the APICs are visible.  On my
board, the APICs are all under an APIC cluster, so they are not
immediately visible from the root node.

Incidentally, there is code already in Coreboot (to generate the PCI
device lists) that takes all_devices and simply probes the PCI downward
link.  It (sanely, IMHO) does not expect to see PCI devices on the
all_devices root node.

I don't have access to a board that I can generate before/after tables
with at this time.  This behavior is very simple to see though; if you
turn on printk spew and look closely at the printed detected device tables
on any amdfam10 board, you will see the root node only connects to the
APIC cluster and the PCI root bus(es).

If you have any more questions feel free to ask!  Hopefully the root cause
of the problem can be located and solved.

Timothy Pearson
Raptor Engineering

More information about the coreboot mailing list