summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@google.com>2021-01-06 22:40:40 -0800
committerFurquan Shaikh <furquan@google.com>2021-01-12 05:22:40 +0000
commit28e61f16341f2a2715ee8e963038f42e6e799eba (patch)
treecb575ff558f7c4a6ba23ad30fd5fc4da9de9d102
parenta19001bff715f36af4aa7a8d020934087b65f136 (diff)
downloadcoreboot-28e61f16341f2a2715ee8e963038f42e6e799eba.tar.xz
device: Use __pci_0_00_0_config in config_of_soc()
This change updates the definition of config_of_soc() to a macro that expands to __pci_0_00_0_config instead of accessing the config structure by referencing the struct device. This allows linker to optimize out unused portions of the device tree from early stages. With this change, bootblock .text section size drops as follows: Platform | Size without change | Size with change | Reduction | ---------------|---------------------|------------------|-------------| GLK (ampton) | 27112 bytes | 9832 bytes | 17280 bytes | APL (reef) | 26488 bytes | 17528 bytes | 8960 bytes | TGL (volteer2) | 47760 bytes | 21648 bytes | 26112 bytes | CML (hatch) | 40616 bytes | 22792 bytes | 17824 bytes | JSL (waddledee)| 37872 bytes | 19408 bytes | 18464 bytes | KBL (soraka) | 31840 bytes | 21568 bytes | 10272 bytes | As static.h is now included in device.h which gets pulled in during the unit tests, a dummy static.h is added under tests/include. Change-Id: I1fbf5b9817065e967e46188739978a1cc96c2c7e Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/49215 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--src/include/device/device.h11
-rw-r--r--tests/include/static.h7
2 files changed, 13 insertions, 5 deletions
diff --git a/src/include/device/device.h b/src/include/device/device.h
index d83cfe4075..1fc5e62bdc 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -6,6 +6,7 @@
#include <device/path.h>
#include <device/pci_type.h>
#include <smbios.h>
+#include <static.h>
#include <types.h>
struct fw_config;
@@ -387,11 +388,11 @@ static inline DEVTREE_CONST void *config_of(const struct device *dev)
devtree_die();
}
-/* config_of_soc() either returns a non-NULL pointer or dies in the config_of() call. */
-static inline DEVTREE_CONST void *config_of_soc(void)
-{
- return config_of(pcidev_on_root(0, 0));
-}
+/*
+ * Returns pointer to config structure of root device (B:D:F = 0:00:0) defined by
+ * sconfig in static.{h/c}.
+ */
+#define config_of_soc() __pci_0_00_0_config
void enable_static_device(struct device *dev);
void enable_static_devices(struct device *bus);
diff --git a/tests/include/static.h b/tests/include/static.h
new file mode 100644
index 0000000000..4799e2c453
--- /dev/null
+++ b/tests/include/static.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/*
+ * static.h is generated by util/sconfig during a coreboot build. Since this file might be
+ * included by other header files that are part of the unit tests, this dummy file is added to
+ * make the test infrastructure happy.
+ */