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
pc80 drivers/pc80/rtc: Move sanitize_cmos() 2020-01-10 15:28:41 +00:00
smp
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
b64_decode.h src/include: Fix typos 2020-01-08 12:57:31 +00:00
base3.h
bcd.h
boardid.h
boot_device.h
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
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
crc_byte.h lib/crc_byte: Add CRC32 implementation 2020-01-07 08:38:58 +00:00
ctype.h
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
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_payload.h
fmap.h commonlib: Add commonlib/bsd 2020-01-28 06:36:13 +00:00
gic.h
gpio.h
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
lib.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
list.h
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
memrange.h
mrc_cache.h
nhlt.h
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
rmodule.h
romstage_handoff.h
rtc.h
rules.h kill CAR_GLOBAL_MIGRATION leftovers 2019-11-30 16:12:04 +00:00
sar.h
sdram_mode.h
smbios.h SMBIOS: Add 'CXL FLexbus 1.0' memory array location 2019-11-11 22:36:55 +00:00
smmstore.h
spd.h
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_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
watchdog.h
wrdd.h