Commit 903b40a [soc/intel: Replace uses of dev_find_slot()] replaced calls to dev_find_slot() with calls to pcidev_path_on_root() for all Intel common SoCs, but it seems unclear exactly what problem this was intended to fix, and has created problems with locating hidden PCI devices.
Commit f2ac0137 [soc/intel: Fix regression with hidden PCI devices] fixed this partially by creating a debug version of pcidev_path_on_root() which falls back on dev_find_slot(), but did not apply it to all devices which need it. On SKL/KBL alone, there are at least 5 different function calls accessing a dozen PCI devices which require falling back on dev_find_slot().
Kyosti has expressed a desire to eliminate the use of dev_find_slot() since it can potentially return false positives prior to device enumeration in ramstage, but as currently implemented the cure seems worse than the disease.
Short term, it seems like having pcidev_path_on_root() fall back on dev_find_slot() with a loud warning (like pcidev_path_on_root_debug() does now) makes the most sense, vs having two nearly identical function calls used inconsistently. Long term, we need a better strategy for dealing with PCI devices which get hidden by FSP / are in violation of PCI spec.
But since discussion on Gerrit seems to have died, reviving it here for a larger audience.
cheers, Matt