summaryrefslogtreecommitdiff
path: root/payloads/libpayload
diff options
context:
space:
mode:
authorFelix Singer <felix.singer@secunet.com>2020-10-13 18:05:03 +0200
committerNico Huber <nico.h@gmx.de>2020-10-20 20:35:24 +0000
commit9e5bc74cc7c2a6ced08163418299cc753b8357f0 (patch)
tree48da51fe50f30085821e6848ca5077438eb43af5 /payloads/libpayload
parent6034b0f184e0fd4063891f24b71ac4dc85751274 (diff)
downloadcoreboot-9e5bc74cc7c2a6ced08163418299cc753b8357f0.tar.xz
libpayload/arch/x86: Introduce pacc pointer in sysinfo_t struct
Currently, the PCI bus gets scanned multiple times for various reasons (e.g. to read the device class). Therefore, and in preparation to CB:46416, introduce the pacc pointer in the sysinfo_t struct and scan the PCI bus while gathering system information. Change-Id: I496c5a3d78c7fb5d7c9f119a0c9a0314d54e729f Signed-off-by: Felix Singer <felix.singer@secunet.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46348 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'payloads/libpayload')
-rw-r--r--payloads/libpayload/arch/x86/sysinfo.c5
-rw-r--r--payloads/libpayload/include/sysinfo.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/payloads/libpayload/arch/x86/sysinfo.c b/payloads/libpayload/arch/x86/sysinfo.c
index ffa57bb08f..5dd606746f 100644
--- a/payloads/libpayload/arch/x86/sysinfo.c
+++ b/payloads/libpayload/arch/x86/sysinfo.c
@@ -78,5 +78,10 @@ int lib_get_sysinfo(void)
lib_sysinfo.memrange[1].type = CB_MEM_RAM;
}
+#if CONFIG(LP_PCI)
+ pci_init(&lib_sysinfo.pacc);
+ pci_scan_bus(&lib_sysinfo.pacc);
+#endif
+
return ret;
}
diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h
index fe3d3304c4..a3f61e7ffa 100644
--- a/payloads/libpayload/include/sysinfo.h
+++ b/payloads/libpayload/include/sysinfo.h
@@ -29,6 +29,7 @@
#ifndef _SYSINFO_H
#define _SYSINFO_H
+#include <pci/pci.h>
#include <stdint.h>
/* Maximum number of memory range definitions. */
@@ -130,6 +131,10 @@ struct sysinfo_t {
/* Pointer to FMAP cache in CBMEM */
uintptr_t fmap_cache;
+
+#if CONFIG(LP_PCI)
+ struct pci_access pacc;
+#endif
};
extern struct sysinfo_t lib_sysinfo;