[edk2-devel] [PATCH v2 2/4] ArmVirtPkg: Use extracted PciHostBridgeUtilityLib

Jiahui Cen via groups.io cenjiahui=huawei.com at groups.io
Sat Nov 7 07:40:23 UTC 2020


From: Yubo Miao <miaoyubo at huawei.com>

Eliminate the currently duplicated code in ArmVirtPkg and use the
extracted PciHostBridgeResourceConflict from PciHostBridgeUtilityLib.

Signed-off-by: Yubo Miao <miaoyubo at huawei.com>
Signed-off-by: Jiahui Cen <cenjiahui at huawei.com>
Cc: Laszlo Ersek <lersek at redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel at arm.com>
Cc: Leif Lindholm <leif at nuviainc.com>
---
 ArmVirtPkg/ArmVirt.dsc.inc                    |  1 +
 .../FdtPciHostBridgeLib/FdtPciHostBridgeLib.c | 61 +------------------
 .../FdtPciHostBridgeLib.inf                   |  2 +
 3 files changed, 4 insertions(+), 60 deletions(-)

diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc
index 4dafd1fa0f..593a523171 100644
--- a/ArmVirtPkg/ArmVirt.dsc.inc
+++ b/ArmVirtPkg/ArmVirt.dsc.inc
@@ -144,6 +144,7 @@
   PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf

   PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPciSegmentLib.inf

   PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf

+  PciHostBridgeUtilityLib|OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf

 

   # USB Libraries

   UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf

diff --git a/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c b/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c
index 496b192d22..3952f511b4 100644
--- a/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c
+++ b/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c
@@ -14,6 +14,7 @@
 #include <Library/MemoryAllocationLib.h>

 #include <Library/PcdLib.h>

 #include <Library/UefiBootServicesTableLib.h>

+#include <Library/PciHostBridgeUtilityLib.h>

 

 #include <Protocol/FdtClient.h>

 #include <Protocol/PciRootBridgeIo.h>

@@ -51,9 +52,6 @@ STATIC EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath = {
 };

 

 GLOBAL_REMOVE_IF_UNREFERENCED

-CHAR16 *mPciHostBridgeLibAcpiAddressSpaceTypeStr[] = {

-  L"Mem", L"I/O", L"Bus"

-};

 

 //

 // We expect the "ranges" property of "pci-host-ecam-generic" to consist of

@@ -414,60 +412,3 @@ PciHostBridgeFreeRootBridges (
   ASSERT (Count == 1);

 }

 

-/**

-  Inform the platform that the resource conflict happens.

-

-  @param HostBridgeHandle Handle of the Host Bridge.

-  @param Configuration    Pointer to PCI I/O and PCI memory resource

-                          descriptors. The Configuration contains the resources

-                          for all the root bridges. The resource for each root

-                          bridge is terminated with END descriptor and an

-                          additional END is appended indicating the end of the

-                          entire resources. The resource descriptor field

-                          values follow the description in

-                          EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL

-                          .SubmitResources().

-**/

-VOID

-EFIAPI

-PciHostBridgeResourceConflict (

-  EFI_HANDLE                        HostBridgeHandle,

-  VOID                              *Configuration

-  )

-{

-  EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor;

-  UINTN                             RootBridgeIndex;

-  DEBUG ((EFI_D_ERROR, "PciHostBridge: Resource conflict happens!\n"));

-

-  RootBridgeIndex = 0;

-  Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) Configuration;

-  while (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) {

-    DEBUG ((EFI_D_ERROR, "RootBridge[%d]:\n", RootBridgeIndex++));

-    for (; Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR; Descriptor++) {

-      ASSERT (Descriptor->ResType <

-              (sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr) /

-               sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr[0])

-               )

-              );

-      DEBUG ((EFI_D_ERROR, " %s: Length/Alignment = 0x%lx / 0x%lx\n",

-              mPciHostBridgeLibAcpiAddressSpaceTypeStr[Descriptor->ResType],

-              Descriptor->AddrLen, Descriptor->AddrRangeMax

-              ));

-      if (Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) {

-        DEBUG ((EFI_D_ERROR, "     Granularity/SpecificFlag = %ld / %02x%s\n",

-                Descriptor->AddrSpaceGranularity, Descriptor->SpecificFlag,

-                ((Descriptor->SpecificFlag &

-                  EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE

-                  ) != 0) ? L" (Prefetchable)" : L""

-                ));

-      }

-    }

-    //

-    // Skip the END descriptor for root bridge

-    //

-    ASSERT (Descriptor->Desc == ACPI_END_TAG_DESCRIPTOR);

-    Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *)(

-                   (EFI_ACPI_END_TAG_DESCRIPTOR *)Descriptor + 1

-                   );

-  }

-}

diff --git a/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf b/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf
index 277ccfd245..97e9368c8e 100644
--- a/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf
+++ b/ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf
@@ -31,6 +31,7 @@
   ArmVirtPkg/ArmVirtPkg.dec

   MdeModulePkg/MdeModulePkg.dec

   MdePkg/MdePkg.dec

+  OvmfPkg/OvmfPkg.dec

 

 [LibraryClasses]

   DebugLib

@@ -38,6 +39,7 @@
   DxeServicesTableLib

   MemoryAllocationLib

   PciPcdProducerLib

+  PciHostBridgeUtilityLib

 

 [FixedPcd]

   gArmTokenSpaceGuid.PcdPciMmio32Translation

-- 
2.19.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#67170): https://edk2.groups.io/g/devel/message/67170
Mute This Topic: https://groups.io/mt/78135569/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list