]> git.proxmox.com Git - mirror_edk2.git/commit
Ovmf/HardwareInfoLib: Add Dxe lib to dynamically parse heterogenous data
authorNicolas Ojeda Leon <ncoleon@amazon.com>
Wed, 19 Jan 2022 14:12:30 +0000 (15:12 +0100)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 22 Jun 2022 15:34:16 +0000 (15:34 +0000)
commita1bd79c5144cf39f4dee951974b377f5c1c03ce7
treefd2563dcf126ddf2790c3d3bef24408b7d46f62b
parent2b1a5b8c613301311113e1efc6fc65478e2e6365
Ovmf/HardwareInfoLib: Add Dxe lib to dynamically parse heterogenous data

Following the Hardware Info library, create the DxeHardwareInfoLib
which implements the whole API capable of parsing heterogeneous hardware
information. The list-like API grants callers a flexible and common
pattern to retrieve the data. Moreover, the initial source is a BLOB
which generalizes the host-to-guest transmission mechanism.

The Hardware Info library main objective is to provide a way to
describe non-discoverable hardware so that the host can share the
available resources with the guest in Ovmf platforms. This change
features and embraces the main idea behind the library by providing
an API that parses a BLOB into a linked list to retrieve hardware
data from any source. Additionally, list-like APIs are provided so
that the hardware info list can be traversed conveniently.
Similarly, the capability is provided to filter results by specific
hardware types. However, heterogeneous elements can be added to the
list, increasing the flexibility. This way, a single source, for
example a fw-cfg file, can be used to describe several instances of
multiple types of hardware.

This part of the Hardware Info library makes use of dynamic memory
and is intended for stages in which memory services are available.
A motivation example is the PciHostBridgeLib. This library, part
of the PCI driver populates the list of PCI root bridges during DXE
stage for future steps to discover the resources under them. The
hardware info library can be used to obtain the detailed description
of available host bridges, for instance in the form of a fw-cfg file,
and parse that information into a dynmaic list that allows, first to
verify consistency of the data, and second discover the resources
availabe for each root bridge.

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>
ArmVirtPkg/ArmVirtQemu.dsc
OvmfPkg/AmdSev/AmdSevX64.dsc
OvmfPkg/Bhyve/BhyveX64.dsc
OvmfPkg/CloudHv/CloudHvX64.dsc
OvmfPkg/Library/HardwareInfoLib/DxeHardwareInfoLib.inf [new file with mode: 0644]
OvmfPkg/Library/HardwareInfoLib/HardwareInfoDxe.c [new file with mode: 0644]
OvmfPkg/Microvm/MicrovmX64.dsc
OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc
OvmfPkg/OvmfXen.dsc