Revision: 17957
http://sourceforge.net/p/edk2/code/17957
Author: lersek
Date: 2015-07-14 12:02:06 +0000 (Tue, 14 Jul 2015)
Log Message:
-----------
OvmfPkg: PciHostBridgeDxe: embed device path in private root bridge struct
Currently we define a device path for each root bridge statically (for all
one of them). Since we'll want to create a dynamic number of root bridges,
replace the static device paths with a common template, embed the actual
device path into the private root bridge structure, and distinguish the
device paths from each other in the UID field (as required by ACPI).
This patch is best viewed with "git show -b".
Cc: Jordan Justen <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <[email protected]>
Regression-tested-by: Gabriel Somlo <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>
Modified Paths:
--------------
trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c
trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h
Modified: trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c
===================================================================
--- trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c 2015-07-14 12:02:01 UTC
(rev 17956)
+++ trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.c 2015-07-14 12:02:06 UTC
(rev 17957)
@@ -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
+ (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_TYPE,
- END_ENTIRE_DEVICE_PATH_SUBTYPE,
- {
- END_DEVICE_PATH_LENGTH,
- 0
- }
+ 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,9 +134,11 @@
}
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,
HostBridge->HostBridgeHandle,
@@ -148,7 +149,7 @@
Status = gBS->InstallMultipleProtocolInterfaces(
&PrivateData->Handle,
&gEfiDevicePathProtocolGuid,
- PrivateData->DevicePath,
+ &PrivateData->DevicePath,
&gEfiPciRootBridgeIoProtocolGuid,
&PrivateData->Io,
NULL
Modified: trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h
===================================================================
--- trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h 2015-07-14 12:02:01 UTC
(rev 17956)
+++ trunk/edk2/OvmfPkg/PciHostBridgeDxe/PciHostBridge.h 2015-07-14 12:02:06 UTC
(rev 17957)
@@ -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.<BR>
This program and the accompanying materials are licensed and made available
@@ -605,7 +606,7 @@
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;
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits