coreboot/src/include
Jeremy Soller cf2ac543a0 pciexp: Add support for allocating PCI express hotplug resources
This change adds support for allocating resources for PCI express hotplug
bridges when PCIEXP_HOTPLUG is selected. By default, this will add 32 PCI
subordinate numbers (buses), 256 MiB of prefetchable memory, 8 MiB of
non-prefetchable memory, and 8 KiB of I/O space to any device with the
PCI_EXP_SLTCAP_HPC bit set in the PCI_EXP_SLTCAP register, which
indicates hot-plugging capability. The resource allocation is configurable,
please see the PCIEXP_HOTPLUG_* variables in src/device/Kconfig.

In order to support the allocation of hotplugged PCI buses, a new field
is added to struct device called hotplug_buses. This is defaulted to
zero, but when set, it adds the hotplug_buses value to the subordinate
value of the PCI bridge. This allows devices to be plugged in and
unplugged after boot.

This code was tested on the System76 Darter Pro (darp6). Before this
change, there are not enough resources allocated to the Thunderbolt
PCI bridge to allow plugging in new devices after boot. This can be
worked around in the Linux kernel by passing a boot param such as:
pci=assign-busses,hpbussize=32,realloc

This change makes it possible to use Thunderbolt hotplugging without
kernel parameters, and attempts to match closely what our motherboard
manufacturer's firmware does by default.

Signed-off-by: Jeremy Soller <jeremy@system76.com>
Change-Id: I500191626584b83e6a8ae38417fd324b5e803afc
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35946
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2020-02-05 09:32:30 +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 src: Use '#include <smp/node.h>' when appropriate 2019-12-19 05:23:25 +00:00
device pciexp: Add support for allocating PCI express hotplug resources 2020-02-05 09:32:30 +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 src/include: Add guards on all header files 2017-08-01 23:04:15 +00:00
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 tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
bcd.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
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 cbmem: add coreboot table records for each cbmem entry 2015-11-03 00:19:46 +01:00
inttypes.h include, lib: Add <inttypes.h> printf macros 2019-08-10 08:47:08 +00:00
ip_checksum.h src/include: Wrap lines at 80 columns 2017-03-13 17:23:37 +01:00
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 arches: lib: add main_decl.h for main() declaration 2016-02-11 23:29:08 +01:00
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 arch/x86: add functions to generate random numbers 2017-02-20 04:46:10 +01:00
reg_script.h soc/intel/fsp_baytrail: Drop support 2019-11-21 06:41:09 +00:00
region_file.h lib: add region file support 2016-12-08 16:10:28 +01:00
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 src/include: Open brace on same line as enum or struct 2017-03-12 15:46:23 +01:00
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 src/include: Remove spaces before tabs 2017-03-12 15:45:37 +01:00
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 Remove extra newlines from the end of all coreboot files. 2016-07-31 18:19:33 +02:00