On Wed, 22 Jun 2022 at 17:35, Ard Biesheuvel <a...@kernel.org> wrote:
>
> On Tue, 21 Jun 2022 at 23:28, Nicolas Ojeda Leon <ncol...@amazon.com> wrote:
> >
> > Increased control is provided in Ovmf platforms to define and configure
> > the specifications of multiple PCI host bridges in the hypervisor. The
> > host propagates this information to the guest, initially through fw-cfg
> > interface.
> >
> > In some AWS EC2 platforms, we expose a PCI topology including several
> > root bridges portraying information about physical distribution that
> > enables the guest to optimize accesses. Current PCI driver for Ovmf
> > enables the explicit definition of multiple root bridges and contains
> > the logic to fix their resources based on platform-specific PCD
> > entries. However, we need a way to control, from the hypervisor, how
> > many and which resources each PCI root bridge can use. For this
> > reason, this patch series introduces a mechanism to provide PCI host
> > bridges information like bus number range, attributes, allocation
> > attributes, PIO aperture as well as 32 and 64- bit prefetchable and
> > non-prefetchable MMIO ranges through a fw-cfg item created by the
> > hypervisor and consumed by the guest firmware. In order to offer a
> > generic and extensible way to disclose non-discoverable hardware
> > information from the host to the guest, a new library called
> > HardwareInfoLib is created in the OvmfPkg. In essence, this library
> > offers the functionality to parse a generic BLOB into a list as well
> > as the methods to iterate over such list, including filtering options.
> > The library is conceived in a generic way so that further hardware
> > elements can also be described using it. For such purpose the length
> > of the BLOB is not restricted but instead regarded as a sequence of
> > header-info elements that allow the parsing during runtime.
> > Furthermore, specific functionality is provided wrapping
> > QemuFwCfgReadBytes to extract hardware descriptions, in the
> > aforementioned format, in a static way so that early in the Pei
> > stage the library can be used to identify address space requirements.
> > The core of the library offers enough flexibility to process as many
> > elements, even from different hardware types (heterogenous), as needed
> > in a single run. This library is extended for the particular use case
> > already exposed, PCI host bridges, and this same code offers an
> > example of how to tailor it for further hardware components.
> >
> > After acknowledgement from Gerd Hoffmann and fixing all warnings and
> > errors found by the CI pipeline (via draft pull request), here I send
> > a new revision of the patches for merging.
> >
> > ---
> > Notes:
> >   v6:
> >   Prepearation for upstream merge:
> >   - No functional change at all.
> >   - Small changes to fix all builds excercised by CI
> >     (https://github.com/tianocore/edk2/pull/2938)
> >   - Added libraries to furhter platforms as per dependencies requirements
> >   - Explicit casting of some values as required by build and
> >     verification of values when demoting values.
> >   - Arranged added files copyright to the format required.
> >   - Changed HOST_BRIDGE_INFO bitfield member to UINT32 to follow
> >     EDK2 guidelines motivated on build in 32-bit windows systems.
> >   - Added verification of Bus Number range when values provided by
> >     host to make sure Root Bridge is initialized with valid values
> >
> >   v5:
> >   - Removed last 3 patches dealing with pre-populated resources to
> >     encapsulate related changes in more manageable chunks and while
> >     pre-populated changes are finalized.
> >   - Added Acked-by to all commits
> >   - Re-based on top of latest master and refactored changes in
> >     MemDetect.c to adapt to recently created
> >     PlatformInitLib/MemDetect.c
> >
> >   v4:
> >   - Minor modification to use MAX_UINT64 as global invalid base address
> >     when reading PCI host bridge information provided by the host
> >     (Patch 1)
> >   - Refactor PciHostBridgeUtilityGetRootBridges into a thin wrapper that
> >     calls 2 new function: one (BusScan) that performs the legacy bus
> >     scan population process and a new one (HostProvided) that populates
> >     Root Bridges with host provided values. (Patch 5)
> >   - Move code that sets value of PcdPciPreservePopulatedMappings token
> >     based on host-provided fw-cfg file into the function that populates
> >     root bridges with host provided data (Patch 6)
> >   - Restructured base address retrieval to leave PCI Resource Allocation
> >     protocol untouched and instead augment the existing services to
> >     enable base address retrieval before allocation. (Patch 7)
> >   - Use new method to retrieve Root Bridge base addresses before
> >     allocation and use that to handle pre-populated BARs (Patch 8)
> >
> >
> > Nicolas Ojeda Leon (5):
> >   OvmfPkg/Library: Create base HardwareInfoLib for PCI Host Bridges
> >   Ovmf/HardwareInfoLib: Create Pei lib to parse directly from fw-cfg
> >   Ovmf/HardwareInfoLib: Add Dxe lib to dynamically parse heterogenous
> >     data
> >   Ovmf/PlatformPei: Use host-provided GPA end if available
> >   OvmfPkg/PciHostBridgeUtilityLib: Initialize RootBridges apertures with
> >     spec
> >
>
> Merged as #3000,
>
> Thanks all,
>

This series appears to have triggered a failure in our CI. Could
someone propose a fix please?

https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/4563/


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90716): https://edk2.groups.io/g/devel/message/90716
Mute This Topic: https://groups.io/mt/91909735/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to