In the SMI handler, this might work because of the static PCI_DEV()
value (it would access the correct PCI config space and likely run
into the 0xffffffff check later).
In ramstage however, where the BUG is printed, it is an actual BUG!
There are null-pointer dereferences, or worse, reads from the wrong
devices (see comment in pci_dev_path_on_root_debug()). One can't
simply check for NULL, because of the mess with these device macros
(they are only pointers in the !__SIMPLE_DEVICE__ case). People
started to write code common to simple and non-simple device cases,
before that was supported by the coreboot infrastructure, now every-
thing is chaos...
Generally, all soc code that does a #if defined(__SIMPLE_DEVICE__)
can be considered broken. If you want the BUG (messages) to go away,
please fix the code. IIRC, Kyösti just abandoned some efforts in
that area (because it is too hard to fix while others add new copies
of this broken code pattern). If you can help him out, maybe we can
fix this topic for good.
Patch set 3:Code-Review -1
To view, visit change 38750. To unsubscribe, or for help writing mail filters, visit settings.