diff options
author | Furquan Shaikh <furquan@google.com> | 2021-01-06 22:40:40 -0800 |
---|---|---|
committer | Furquan Shaikh <furquan@google.com> | 2021-01-12 05:22:40 +0000 |
commit | 28e61f16341f2a2715ee8e963038f42e6e799eba (patch) | |
tree | cb575ff558f7c4a6ba23ad30fd5fc4da9de9d102 | |
parent | a19001bff715f36af4aa7a8d020934087b65f136 (diff) |
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.h | 11 | ||||
-rw-r--r-- | tests/include/static.h | 7 |
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. + */ |