OvmfPkg: QemuBootOrderLib: introduce ExtraRootBusMap

SeaBIOS requires the OpenFirmware device paths exported in the "bootorder"
fw-cfg file to refer to extra (PXB) root buses by their relative positions
(in increasing bus number order) rather than by actual bus numbers.

However, OVMF's PCI host bridge / root bridge driver creates PciRoot(UID)
device path nodes for extra PCI root buses with UID=bus_nr, not position.
(These ACPI devpath UID values must, and do, match the UID values exposed
in QEMU's ACPI payload, generated for PXB root buses.)

Therefore the boot order matching logic will have to map extra root bus
positions to bus numbers. Add a small group of utility functions to help
with that.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17964 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Laszlo Ersek
2015-07-14 12:02:39 +00:00
committed by lersek
parent 68306ac2f2
commit 5eb0b80afc
3 changed files with 359 additions and 0 deletions

View File

@@ -32,6 +32,7 @@
[Sources]
QemuBootOrderLib.c
ExtraRootBusMap.c
[Packages]
MdePkg/MdePkg.dec
@@ -49,6 +50,7 @@
PrintLib
DevicePathLib
BaseMemoryLib
OrderedCollectionLib
[Guids]
gEfiGlobalVariableGuid
@@ -60,3 +62,7 @@
[Pcd]
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
[Protocols]
gEfiDevicePathProtocolGuid ## CONSUMES
gEfiPciRootBridgeIoProtocolGuid ## CONSUMES