audk/OvmfPkg/Library
Nicolas Ojeda Leon 3f5b1b9132 OvmfPkg/PciHostBridgeUtilityLib: Initialize RootBridges apertures with spec
Consume the host-provided specification of PCI host bridges if
available. Using the DxeHardwareInfoLib, populate a list of
hardware descriptors based on the content of the "hardware-info"
fw-cfg file, if provided. In the affirmative case, use the
resources and attributes specified by the hypervisor for each
Host Bridge to create the RootBridge elements.

In Ovmf platforms, the host can provide the specification of
non-discoverable hardware resources like PCI host bridges. If the
proper fw-cfg file is found, parse the contents provided by the
host into a linked list by using the Hardware Info library. Then,
using the list of PCI host bridges' descriptions, populate the
PCI_ROOT_BRIDGES array with the resources and attributes specified
by the host. If the file is not provided or no Host Bridge is found
in it, fold back to the legacy method based on pre-defined
apertures and rules.

In some use cases, the host requires additional control over the
hardware resources' configurations in the guest for performance and
discoverability reasons. For instance, to disclose information about
the PCI hierarchy to the guest so that this can profit from
optimized accesses. In this case, the host can decide to describe
multiple PCI Host Bridges and provide a specific set of resources
(e.g. MMIO apertures) so that the guest uses the values provided.
Using the provided values may entitle the guest to added performance,
for example by using specific MMIO mappings that can enable peer-to-peer
communication across the PCI hierarchy or by allocating memory closer
to a device for faster DMA transactions.

Cc: Alexander Graf <graf@amazon.de>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Nicolas Ojeda Leon <ncoleon@amazon.com>
2022-06-22 15:34:16 +00:00
..
AcpiTimerLib OvmfPkg: Update DxeAcpiTimerLib to read HostBridgeDevId in PlatformInfoHob 2022-04-02 10:09:47 +00:00
BaseCachingPciExpressLib OvmfPkg/BaseCachingPciExpressLib: Migrate BaseCachingPciExpressLib 2022-01-29 17:36:59 +00:00
BaseMemEncryptSevLib OvmfPkg: Replace GUEST_TYPE with CC_GUEST_TYPE 2022-04-19 01:26:08 +00:00
BaseMemEncryptTdxLib OvmfPkg/BaseMemEncryptTdxLib: Add TDX helper library 2022-04-02 08:15:12 +00:00
BasePciCapLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
BasePciCapPciSegmentLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
BhyveFwCtlLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
BlobVerifierLibNull OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CcProbeLib OvmfPkg: Add CcProbeLib 2022-04-19 01:26:08 +00:00
DxePciLibI440FxQ35 OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
EmuVariableFvbLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
GenericQemuLoadImageLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
HardwareInfoLib Ovmf/HardwareInfoLib: Add Dxe lib to dynamically parse heterogenous data 2022-06-22 15:34:16 +00:00
LoadLinuxLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
LockBoxLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
MpInitLibDepLib OvmfPkg: Add MpInitLibDepLib 2022-05-11 08:40:53 +00:00
NvVarsFileLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PciHostBridgeLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PciHostBridgeLibScan OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PciHostBridgeUtilityLib OvmfPkg/PciHostBridgeUtilityLib: Initialize RootBridges apertures with spec 2022-06-22 15:34:16 +00:00
PeilessStartupLib OvmfPkg: Implement MeasureHobList/MeasureFvImage 2022-06-07 11:05:53 +00:00
PlatformBmPrintScLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PlatformBootManagerLib OvmfPkg/CloudHv: Connect serial console 2022-01-13 14:54:40 +00:00
PlatformBootManagerLibBhyve OvmfPkg: Call PlatformInitializeConsole for GPU passthrough case 2021-12-17 17:36:14 +00:00
PlatformBootManagerLibGrub OvmfPkg: Call PlatformInitializeConsole for GPU passthrough case 2021-12-17 17:36:14 +00:00
PlatformDebugLibIoPort OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PlatformFvbLibNull OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
PlatformHasIoMmuLib OvmfPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:19 -07:00
PlatformInitLib Ovmf/PlatformPei: Use host-provided GPA end if available 2022-06-22 15:34:16 +00:00
PlatformSecureLib OvmfPkg: strip trailing whitespace 2019-10-04 11:18:32 +01:00
PxeBcPcdProducerLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
QemuBootOrderLib OvmfPkg: Check for QemuFwCfg availability before accessing it 2022-06-03 10:51:26 +00:00
QemuFwCfgLib OvmfPkg: Replace GUEST_TYPE with CC_GUEST_TYPE 2022-04-19 01:26:08 +00:00
QemuFwCfgS3Lib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
QemuFwCfgSimpleParserLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
ResetSystemLib OvmfPkg: Handle Cloud Hypervisor host bridge 2021-12-11 14:26:05 +00:00
SerializeVariablesLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
SmbiosVersionLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
SmmCpuFeaturesLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
SmmCpuPlatformHookLibQemu OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Tcg2PhysicalPresenceLibNull OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Tcg2PhysicalPresenceLibQemu OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
TdxMailboxLib OvmfPkg: Add TdxMailboxLib 2022-04-02 08:15:12 +00:00
TlsAuthConfigLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
UefiPciCapPciIoLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
VirtioLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
VirtioMmioDeviceLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
VmgExitLib OvmfPkg: Extend VmgExitLib to handle #VE exception 2022-04-02 08:15:12 +00:00
X86QemuLoadImageLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
XenConsoleSerialPortLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
XenHypercallLib OvmfPkg: Remove RVCT support 2022-05-13 14:58:54 +00:00
XenIoMmioLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
XenPlatformLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
XenRealTimeClockLib OvmfPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00