OvmfPkg: Introduce PciHostBridgeUtilityLib class
Introduce a new PciHostBridgeUtilityLib class to share duplicate code between OvmfPkg and ArmVirtPkg. Extract function PciHostBridgeUtilityResourceConflict from PciHostBridgeResourceConflict in OvmfPkg/PciHostBridgeLib. BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059 Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Rebecca Cran <rebecca@bsdio.com> Cc: Peter Grehan <grehan@freebsd.org> Cc: Anthony Perard <anthony.perard@citrix.com> Cc: Julien Grall <julien@xen.org> Signed-off-by: Jiahui Cen <cenjiahui@huawei.com> Signed-off-by: Yubo Miao <miaoyubo@huawei.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20210119011302.10908-2-cenjiahui@huawei.com>
This commit is contained in:
committed by
mergify[bot]
parent
ca272b9513
commit
7a6172f88b
@@ -20,6 +20,7 @@
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/PciHostBridgeLib.h>
|
||||
#include <Library/PciHostBridgeUtilityLib.h>
|
||||
#include <Library/PciLib.h>
|
||||
#include <Library/QemuFwCfgLib.h>
|
||||
#include "PciHostBridge.h"
|
||||
@@ -33,12 +34,6 @@ typedef struct {
|
||||
#pragma pack ()
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||
CHAR16 *mPciHostBridgeLibAcpiAddressSpaceTypeStr[] = {
|
||||
L"Mem", L"I/O", L"Bus"
|
||||
};
|
||||
|
||||
|
||||
STATIC
|
||||
CONST
|
||||
OVMF_PCI_ROOT_BRIDGE_DEVICE_PATH mRootBridgeDevicePathTemplate = {
|
||||
@@ -407,37 +402,5 @@ PciHostBridgeResourceConflict (
|
||||
VOID *Configuration
|
||||
)
|
||||
{
|
||||
EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor;
|
||||
UINTN RootBridgeIndex;
|
||||
DEBUG ((DEBUG_ERROR, "PciHostBridge: Resource conflict happens!\n"));
|
||||
|
||||
RootBridgeIndex = 0;
|
||||
Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) Configuration;
|
||||
while (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) {
|
||||
DEBUG ((DEBUG_ERROR, "RootBridge[%d]:\n", RootBridgeIndex++));
|
||||
for (; Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR; Descriptor++) {
|
||||
ASSERT (Descriptor->ResType <
|
||||
ARRAY_SIZE (mPciHostBridgeLibAcpiAddressSpaceTypeStr)
|
||||
);
|
||||
DEBUG ((DEBUG_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 ((DEBUG_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
|
||||
);
|
||||
}
|
||||
PciHostBridgeUtilityResourceConflict (Configuration);
|
||||
}
|
||||
|
Reference in New Issue
Block a user