coreboot-kgpe-d16/src/include/device
Furquan Shaikh 1bb05ef30b device: Enable resource allocation above 4G boundary with allocator v4
This change adds back CB:39487 which was reverted as part of
CB:41412. Now that the resource allocator is split into old(v3) and
new(v4), this change adds support for allocating resources above 4G
boundary with the new allocator v4.

Original commit message:
This change adds support for allocating resources above the 4G
boundary by making use of memranges for resource windows enabled in
the previous CL.

It adds a new resource flag IORESOURCE_ABOVE_4G which is used in the
following ways:
a) Downstream device resources can set this flag to indicate that they
would like to have their resource allocation above the 4G
boundary. These semantics will have to be enabled in the drivers
managing the devices. It can also be extended to be enabled via
devicetree. This flag is automatically propagated by the resource
allocator from downstream devices to the upstream bridges in pass
1. It is done to ensure that the resource allocator has a global view
of downstream requirements during pass 2 at domain level.

b) Bridges have a single resource window for each of mem and prefmem
resource types. Thus, if any downstream resource of the bridge
requests allocation above 4G boundary, all the other downstream
resources of the same type under the bridge will be allocated above 4G
boundary.

c) During pass 2, resource allocator at domain level splits
IORESOURCE_MEM into two different memory ranges -- one for the window
below 4G and other above 4G. Resource allocation happens separately
for each of these windows.

d) At the bridge level, there is no extra logic required since the
resource will live entirely above or below the 4G boundary. Hence, all
downstream devices of any bridge will fall within the window allocated
to the bridge resource. To handle this case separately from that of
domain, initializing of memranges for a bridge is done differently
than the domain.

Limitation:
Resources of a given type at the bridge or downstream devices
cannot live both above and below 4G boundary. Thus, if a bridge has
some downstream resources requesting allocation for a given type above
4G boundary and other resources of the same type requesting allocation
below 4G boundary, then all these resources of the same type get
allocated above 4G boundary.

Change-Id: I92a5cf7cd1457f2f713e1ffd8ea31796ce3d0cce
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41466
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2020-05-28 09:41:54 +00:00
..
dram treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
azalia.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
azalia_device.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
cardbus.h src: Use of device_t is deprecated 2018-06-14 09:29:31 +00:00
device.h device/pci_device: Extract pci_domain_set_resources from SOC 2020-05-12 20:07:25 +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 treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
i2c_bus.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
i2c_simple.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
mipi_ids.h Remove new additions of "this file is part of" lines 2020-05-28 09:38:17 +00:00
mmio.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
path.h util/sconfig: Add LPC and ESPI buses 2020-05-12 20:12:17 +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 treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
pci_ids.h device/pci_id: Add Tiger Lake TCSS device ID 2020-04-29 17:19:26 +00:00
pci_mmio_cfg.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
pci_ops.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
pci_rom.h acpi: Move ACPI table support out of arch/x86 (3/5) 2020-05-02 18:45:16 +00:00
pci_type.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +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 treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
pnp_type.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
resource.h device: Enable resource allocation above 4G boundary with allocator v4 2020-05-28 09:41:54 +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 southbridge/intel/common: Add Process Call 2020-05-12 20:08:20 +00:00
soundwire.h device: Add definitions for SoundWire specification 2020-05-19 17:43:11 +00:00
spi.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00