coreboot-kgpe-d16/src/include
Ronald G. Minnich 466ca2c1ad Add configurable ramstage support for minimal PCI scanning
This CL has changes that allow us to enable a configurable
ramstage, and one change that allows us to minimize PCI
scanning. Minimal scanning is a frequently requested feature.

To enable it, we add two new variables to src/Kconfig
CONFIGURABLE_RAMSTAGE
is the overall variable controlling other options for minimizing the
ramstage.

MINIMAL_PCI_SCANNING is how we indicate we wish to enable minimal
PCI scanning.

Some devices must be scanned in all cases, such as 0:0.0.

To indicate which devices we must scan, we add a new mandatory
keyword to sconfig

It is used in place of on, off, or hidden, and indicates
a device is enabled and mandatory. Mandatory
devices are always scanned. When MINIMAL_PCI_SCANNING is enabled,
ONLY mandatory devices are scanned.

We further add support in src/device/pci_device.c to manage
both MINIMAL_PCI_SCANNING and mandatory devices.

Finally, to show how this works in practice, we add mandatory
keywords to 3 devices on the qemu-q35.

TEST=
1. This is tested and working on the qemu-q35 target.
2. On CML-Hatch

Before CL:
Total Boot time: ~685ms

After CL:
Total Boot time: ~615ms

Change-Id: I2073d9f8e9297c2b02530821ebb634ea2a5c758e
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/36221
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Jeremy Soller <jeremy@system76.com>
2020-02-08 18:57:36 +00:00
..
boot src: Use 'include <boot/coreboot_tables.h>' when appropriate 2019-10-27 17:48:30 +00:00
console src/include: Fix typos 2020-01-18 10:55:45 +00:00
cpu security/intel/stm: Add STM support 2020-02-05 18:49:27 +00:00
device Add configurable ramstage support for minimal PCI scanning 2020-02-08 18:57:36 +00:00
efi include/efi/efi_datatype: Convert EFI datatypes as per coreboot specification 2019-03-09 04:25:31 +00:00
pc80 drivers/pc80/rtc: Move sanitize_cmos() 2020-01-10 15:28:41 +00:00
smp coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
superio superio/hwm5_conf: factor out HWM access from ITE env_ctrl 2019-10-08 18:06:56 +00:00
sys
adainit.h src/include: Fix typos 2020-01-08 12:57:31 +00:00
assert.h src/include/assert.h: add noreturn attribute to dead_code() 2019-05-17 07:16:50 +00:00
b64_decode.h src/include: Fix typos 2020-01-08 12:57:31 +00:00
base3.h
bcd.h
boardid.h ec/google/chromeec: Update google_chromeec_get_board_version prototype 2018-09-20 17:15:26 +00:00
boot_device.h boot_device: Constify argument 2019-05-12 07:47:45 +00:00
bootblock_common.h AGESA,binaryPI: Add compatibility wrapper for romstage entry 2019-11-30 08:15:30 +00:00
bootmem.h src/include: Fix typos 2020-01-18 10:55:45 +00:00
bootmode.h vboot: deprecate physical dev switch 2019-03-27 06:13:27 +00:00
bootsplash.h lib/coreboot_table: Show splashscreen in lb_table_init 2019-09-15 11:10:58 +00:00
bootstate.h src/include: Remove unused <stdlib.h> 2020-01-02 09:05:44 +00:00
cbfs.h cbfs: Remove locator concept 2020-01-18 10:51:04 +00:00
cbmem.h lib/cbmem: Remove the cbmem_top_init() hook 2019-11-10 15:39:00 +00:00
cper.h coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
crc_byte.h lib/crc_byte: Add CRC32 implementation 2020-01-07 08:38:58 +00:00
ctype.h add ctype.h header 2019-06-24 21:15:14 +00:00
delay.h cpu/x86/lapic: Refactor timer_fsb() 2019-09-19 09:28:55 +00:00
device_tree.h src/include: Fix typos 2020-01-18 10:55:45 +00:00
dimm_info_util.h src/*: normalize Google copyright headers 2018-09-28 07:13:00 +00:00
edid.h lib: edid: Move manufacturer name from private extra to public info 2019-08-15 03:04:08 +00:00
elog.h ELOG: Introduce elog_gsmi variants 2019-11-09 10:49:47 +00:00
endian.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
fallback.h drivers/pc80/rtc: Clean up some headers 2020-01-07 18:40:02 +00:00
fit.h fit: Add overlay support 2019-06-21 09:22:31 +00:00
fit_payload.h lib: Add FIT payload support 2018-06-19 18:10:05 +00:00
fmap.h commonlib: Add commonlib/bsd 2020-01-28 06:36:13 +00:00
gic.h coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
gpio.h gpio: Change gpio_baseX_value() function return types to unsigned 2018-08-03 18:10:02 +00:00
halt.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
imd.h
inttypes.h include, lib: Add <inttypes.h> printf macros 2019-08-10 08:47:08 +00:00
ip_checksum.h
kconfig.h kconfig: Drop IS_ENABLED() macro 2019-06-04 13:33:40 +00:00
lib.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
list.h lib/devicetree: Integrate flattened devicetree support 2018-04-30 09:33:32 +00:00
main_decl.h
memlayout.h fmap: Make FMAP_CACHE mandatory if it is configured in 2019-12-11 11:42:26 +00:00
memory_info.h src/soc/intel/common/smbios: Add addtional infos to dimm_info 2019-06-06 11:32:52 +00:00
memrange.h lib/memrange: Introduce method to clone memrange 2018-04-11 15:11:04 +00:00
mrc_cache.h drivers/mrc_cache: Add missing include file to mrc_cache.h 2017-12-18 16:07:09 +00:00
nhlt.h lib/hardwaremain: Fix more ACPI/IOAPIC typos 2019-01-31 04:34:53 +00:00
option.h drivers/pc80/rtc: Move sanitize_cmos() 2020-01-10 15:28:41 +00:00
program_loading.h bootblock: Support normal/fallback mechanism again 2019-12-27 08:59:20 +00:00
ramdetect.h lib: ramdetect: Register exception handlers for ARMv8 2019-08-26 07:14:03 +00:00
random.h
reg_script.h soc/intel/fsp_baytrail: Drop support 2019-11-21 06:41:09 +00:00
region_file.h
reset.h reset: Finalize move to new API 2018-10-31 15:29:42 +00:00
rmodule.h coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
romstage_handoff.h src/*: normalize Google copyright headers 2018-09-28 07:13:00 +00:00
rtc.h
rules.h kill CAR_GLOBAL_MIGRATION leftovers 2019-11-30 16:12:04 +00:00
sar.h vendorcode/google: support multiple SAR filenames 2018-12-17 14:26:10 +00:00
sdram_mode.h
smbios.h SMBIOS: Add 'CXL FLexbus 1.0' memory array location 2019-11-11 22:36:55 +00:00
smmstore.h smmstore: make smmstore's SMM handler code follow everything else 2018-12-05 13:31:22 +00:00
spd.h src/lib/dimm_info_util.c: Add methods to convert from SMBIOS to SPD 2018-04-11 14:41:59 +00:00
spd_bin.h lib/spd_bin.c: Drop CAR_GLOBAL_MIGRATION support 2019-11-29 09:09:19 +00:00
spd_ddr2.h src/include: Fix typos 2020-01-18 10:55:45 +00:00
spi-generic.h src/include: Fix typos 2020-01-18 10:55:45 +00:00
spi_bitbang.h spi: Add helper functions for bit-banging 2018-04-03 00:34:52 +00:00
spi_flash.h drivers/spi/spi_flash: remove spi flash names 2020-01-28 14:44:37 +00:00
spi_sdcard.h drivers/spi: add drivers for sdcard mounted on the spi bus 2019-11-14 11:38:38 +00:00
stage_cache.h lib/stage_cache: Refactor Kconfig options 2019-08-08 04:50:33 +00:00
stdbool.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
stddef.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
stdint.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
stdlib.h lib/malloc: Implement a simple free() only for last malloc() 2020-01-02 18:22:53 +00:00
string.h src/include: Remove unused <stdlib.h> 2020-01-02 09:05:44 +00:00
swab.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
symbols.h lib/fmap: Add optional pre-RAM cache 2019-11-14 03:30:11 +00:00
thread.h src/: Replace some __PRE_RAM__ use 2019-09-14 11:16:17 +00:00
timer.h src/include: Fix typos 2020-01-18 10:55:45 +00:00
timestamp.h timestamps: Remove TIMESTAMP_CACHE_IN_BSS 2019-09-13 19:48:26 +00:00
trace.h lib/trace: Replace __PRE_RAM__ use 2019-09-23 21:38:50 +00:00
types.h commonlib: Add commonlib/bsd 2020-01-28 06:36:13 +00:00
uuid.h lib/uuid: Add UUID parsing function 2019-11-01 11:38:22 +00:00
vbe.h src: Use 'include <boot/coreboot_tables.h>' when appropriate 2019-10-27 17:48:30 +00:00
version.h ACPI: Correct asl_compiler_revision value 2019-02-21 19:07:31 +00:00
watchdog.h coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
wrdd.h