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

View Change

To view, visit change 38750. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I6bc04e48e97b0a29aef8aa050d3aad116cff1a14
Gerrit-Change-Number: 38750
Gerrit-PatchSet: 3
Gerrit-Owner: Wim Vervoorn <wvervoorn@eltan.com>
Gerrit-Reviewer: Frans Hendriks <fhendriks@eltan.com>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Patrick Rudolph <siro@das-labor.org>
Gerrit-Reviewer: Wim Vervoorn <wvervoorn@eltan.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Paul Menzel <paulepanter@users.sourceforge.net>
Gerrit-Comment-Date: Mon, 10 Feb 2020 14:28:16 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment