1dc5ce31ce
Per PCI specification, function 0 must be present, so functions 1 to 7 can be skipped in this case. For a device that is not multi-function, it may not decode function number in the hardware at all. To avoid registering such a device eight times, skip scanning functions 1 to 7. Without the latter fix, a single-function PCI bridge may call pci_scan_bus() second time and secondary side devices would get appended second time in the array devices[]. At that point, quicksort() apparently hits an infinite recursion loop. Since pci_scan_bus() is called in part of the early modules->init() sequence early in main(), the errors here left coreinfo payload completely silent when PCI module was built-in on affected system. Terminal screen was cleared, though. Change-Id: Ifc6622f050b98afb7196de0cc3a863c4cdfa6c94 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/26990 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de> |
||
---|---|---|
.. | ||
COPYING | ||
Kconfig | ||
Makefile | ||
README | ||
bootlog_module.c | ||
cbfs_module.c | ||
coreboot_module.c | ||
coreinfo.c | ||
coreinfo.h | ||
cpuid.S | ||
cpuinfo_module.c | ||
multiboot_module.c | ||
nvram_module.c | ||
pci_module.c | ||
ramdump_module.c | ||
timestamps_module.c |
README
This is a silly little program that demonstrates how cool libpayload is and also serves a purpose. It is fun and educational! Requirements ------------ You should use the coreboot reference cross compiler. If you insist on using your system compiler, some Linux distributions might require you to install a package called gcc-multilib if you are on a 64bit system. Build ----- You need libpayload to build coreinfo. So, first, you need follow the README of libpayload to build it but install libpayload into its own directory by doing this: $ make DESTDIR=/path/to/libpayload/install install Then you can build coreinfo now: $ cd coreinfo $ make menuconfig $ make