In a nutshell:

The implementation of dev_find_slot() traverses the linked list of all
devices in the devicetree, regardless of the topology. Since PCI bus
numbers are only assigned in early ramstage, this function is not a
reliable API. Furthermore, referencing (dynamically) assigned PCI
busses by integers (>1) is also prone to errors as insertion of PCIe
add-on cards will shift these.

Now.. during PCI enumeration, missing static devices are only removed
from the PCI topology links, not the 'linked list of all devices' that
dev_find_slot(). AFAICS, this is the root cause why pcidev_on_root()
caused regressions with 903b40a. Should be easy enough to implement
platform hook telling to not remove PCI device node from topology
links (based on BDF), even when it does not respond to ID queries.

Kyösti
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to