On Thu, Sep 26, 2019 at 10:06 AM Kyösti Mälkki <kyosti.mal...@gmail.com>
wrote:

> 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.
>

Yes, we can certainly do that. However, I also think this issue and yours
and Nico's devicetree work are somewhat related as well as
https://review.coreboot.org/c/coreboot/+/35621.

Here's some of the requirements/issues we should resolve that come to mind:

1. Easy way to directly retrieve a device's chip config object w/o
traversing the device hierarchy. Which leads to...
2. Symbol alias for accessing struct device directly (no bdf lookup)
3. Symbol alias for pci b/d/f lookup (equivalent of simple device but
cleaner) so we can perform pci operations.
4. possibly hidden pci devices

Anything else I'm missing? I think a lot of the issues we're running into
could be fixed w/ the above. Let me know what you think.


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

Reply via email to