> 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/

Thanks Ard for notifying.

I will post the fix in short, tested build locally and now running the CI 
pipeline (https://github.com/tianocore/edk2/pull/2938).

Best regards,

Nicolas



Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90735): https://edk2.groups.io/g/devel/message/90735
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