coreboot-kgpe-d16/src/include/device
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
..
dram src/{device,drivers,mb,nb,soc,sb}: Remove unused 'include <console/console.h>' 2019-10-21 14:21:09 +00:00
azalia.h src/include: Remove use of binary constants 2017-03-13 17:22:59 +01:00
azalia_device.h src: Remove unneeded include <arch/interrupt.h> 2019-09-11 14:45:08 +00:00
cardbus.h src: Use of device_t is deprecated 2018-06-14 09:29:31 +00:00
device.h Add configurable ramstage support for minimal PCI scanning 2020-02-08 18:57:36 +00:00
drm_dp_helper.h
hypertransport.h device/hypertransport: Drop unused code 2019-11-22 10:41:10 +00:00
hypertransport_def.h nb/amd/fam10: Drop support 2019-11-20 19:08:30 +00:00
i2c.h include/device: Split i2c.h into three 2017-08-18 15:33:29 +00:00
i2c_bus.h src/include: Remove unused <stdlib.h> 2020-01-02 09:05:44 +00:00
i2c_simple.h Fix up remaining boolean uses of CONFIG_XXX to CONFIG(XXX) 2019-03-25 11:03:49 +00:00
mmio.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
path.h src: Add missing include <stdint.h> 2018-11-01 11:25:07 +00:00
pci.h device/pci_early: Drop some __SIMPLE_DEVICE__ use 2019-09-30 20:06:06 +00:00
pci_def.h pciexp: Add support for allocating PCI express hotplug resources 2020-02-05 09:32:30 +00:00
pci_ehci.h src/: Replace some __PRE_RAM__ use 2019-09-14 11:16:17 +00:00
pci_ids.h soc/intel/common: Add Elkhartlake Device IDs 2020-01-22 15:42:26 +00:00
pci_mmio_cfg.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
pci_ops.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
pci_rom.h device/pci_device.c: Use verified boot to check oprom 2019-10-04 16:24:44 +00:00
pci_type.h device/pci: Rewrite PCI MMCONF with symbol reference 2019-04-07 02:31:36 +00:00
pciexp.h pciexp: Add support for allocating PCI express hotplug resources 2020-02-05 09:32:30 +00:00
pcix.h src: Use of device_t is deprecated 2018-06-14 09:29:31 +00:00
pnp.h superio/common/conf_mode: Add op to write SSDT 2019-12-22 13:47:39 +00:00
pnp_def.h
pnp_ops.h device/pnp_ops: Add ENV_PNP_SIMPLE_DEVICE 2019-09-29 03:39:20 +00:00
pnp_type.h device/pnp_ops: Add ENV_PNP_SIMPLE_DEVICE 2019-09-29 03:39:20 +00:00
resource.h device: Constify dev argument to (probe|find)_resource() 2019-07-31 09:10:28 +00:00
smbus.h device/smbus: Drop unused smbus_set_link() 2020-01-04 22:08:38 +00:00
smbus_def.h Reinvent I2C ops 2017-08-18 15:33:45 +00:00
smbus_host.h sb/intel/common: Declare common smbus_base() and enable_smbus() 2020-01-14 18:18:26 +00:00
spi.h device: Add a new "SPI" device type 2017-02-16 08:41:28 +01:00