diff --git a/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c b/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c index 985290928d..c2277bfca3 100644 --- a/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c +++ b/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c @@ -17,37 +17,36 @@ #include "PciHostBridge.h" -// -// Hard code: Root Bridge's device path -// Root Bridge's resource aperture -// - -EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath[1] = { +STATIC +CONST +EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mRootBridgeDevicePathTemplate = { { { + ACPI_DEVICE_PATH, + ACPI_DP, { - ACPI_DEVICE_PATH, - ACPI_DP, - { - (UINT8) (sizeof(ACPI_HID_DEVICE_PATH)), - (UINT8) ((sizeof(ACPI_HID_DEVICE_PATH)) >> 8) - } - }, - EISA_PNP_ID(0x0A03), - 0 - }, - - { - END_DEVICE_PATH_TYPE, - END_ENTIRE_DEVICE_PATH_SUBTYPE, - { - END_DEVICE_PATH_LENGTH, - 0 + (UINT8) (sizeof(ACPI_HID_DEVICE_PATH)), + (UINT8) ((sizeof(ACPI_HID_DEVICE_PATH)) >> 8) } + }, + EISA_PNP_ID(0x0A03), // HID + 0 // UID + }, + + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 } } }; +// +// Hard code: Root Bridge's resource aperture +// + PCI_ROOT_BRIDGE_RESOURCE_APERTURE mResAperture[1] = { {0, 0xff, 0x80000000, 0xffffffff, 0, 0xffff} }; @@ -135,8 +134,10 @@ InitializePciHostBridge ( } PrivateData->Signature = PCI_ROOT_BRIDGE_SIGNATURE; - PrivateData->DevicePath = - (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[Loop2]; + + CopyMem (&PrivateData->DevicePath, &mRootBridgeDevicePathTemplate, + sizeof mRootBridgeDevicePathTemplate); + PrivateData->DevicePath.AcpiDevicePath.UID = Loop2; RootBridgeConstructor ( &PrivateData->Io, @@ -148,7 +149,7 @@ InitializePciHostBridge ( Status = gBS->InstallMultipleProtocolInterfaces( &PrivateData->Handle, &gEfiDevicePathProtocolGuid, - PrivateData->DevicePath, + &PrivateData->DevicePath, &gEfiPciRootBridgeIoProtocolGuid, &PrivateData->Io, NULL diff --git a/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h b/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h index 28e0cd0e51..05b8cecf80 100644 --- a/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h +++ b/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h @@ -1,6 +1,7 @@ /** @file The Header file of the Pci Host Bridge Driver + Copyright (C) 2015, Red Hat, Inc. Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available @@ -605,7 +606,7 @@ typedef struct { UINT64 MemLimit; UINT64 IoLimit; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_PCI_ROOT_BRIDGE_DEVICE_PATH DevicePath; EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL Io; } PCI_ROOT_BRIDGE_INSTANCE;