coreboot/src/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 printf: Automatically prefix %p with 0x 2019-12-11 11:38:59 +00:00
oprom src/{drivers,device,ec}: Remove unused <stdlib.h> 2019-12-19 05:25:56 +00:00
azalia_device.c AUTHORS: Move src/device copyrights into AUTHORS file 2019-09-17 08:14:13 +00:00
cardbus_device.c src: Remove unused include '<device/pci_ids.h>' 2019-10-18 18:41:09 +00:00
cpu_device.c AUTHORS: Move src/device copyrights into AUTHORS file 2019-09-17 08:14:13 +00:00
device.c device: Log times with millisecond resolution 2019-12-31 17:38:22 +00:00
device_const.c device/pci: Reduce scope of dev_find_slot() 2019-11-21 19:43:34 +00:00
device_util.c src/[arch-lib]: change "unsigned" to "unsigned int" 2019-10-27 21:08:39 +00:00
hypertransport.c device/hypertransport: Drop unused code 2019-11-22 10:41:10 +00:00
i2c.c src/[arch-lib]: change "unsigned" to "unsigned int" 2019-10-27 21:08:39 +00:00
i2c_bus.c src/{drivers,device,ec}: Remove unused <stdlib.h> 2019-12-19 05:25:56 +00:00
Kconfig pciexp: Add support for allocating PCI express hotplug resources 2020-02-05 09:32:30 +00:00
Makefile.inc Add buffer_to/from_fifo32(_prefix) helpers 2019-08-22 10:36:22 +00:00
mmio.c AUTHORS: Move src/device copyrights into AUTHORS file 2019-09-17 08:14:13 +00:00
pci_class.c src/device: Update pci_class to PCI-SIG Specification 2020-01-10 10:55:49 +00:00
pci_device.c Add configurable ramstage support for minimal PCI scanning 2020-02-08 18:57:36 +00:00
pci_early.c device/pci_early: Drop some __SIMPLE_DEVICE__ use 2019-09-30 20:06:06 +00:00
pci_ops.c device,drivers/: Drop some __SIMPLE_DEVICE__ use 2019-09-30 11:07:46 +00:00
pci_rom.c arch/acpi.h: Use of typedef for acpi_vfct 2019-10-24 07:44:53 +00:00
pciexp_device.c pciexp: Add support for allocating PCI express hotplug resources 2020-02-05 09:32:30 +00:00
pcix_device.c AUTHORS: Move src/device copyrights into AUTHORS file 2019-09-17 08:14:13 +00:00
pnp_device.c device/pnp_device: improve warning/error messages 2020-02-01 01:45:03 +00:00
root_device.c device: Use scan_static_bus() over scan_lpc_bus() 2019-10-08 12:59:56 +00:00
smbus_ops.c device/smbus: Drop unused smbus_set_link() 2020-01-04 22:08:38 +00:00
software_i2c.c src/[arch-lib]: change "unsigned" to "unsigned int" 2019-10-27 21:08:39 +00:00