audk/OvmfPkg/Library
Laszlo Ersek feca17fa4b OvmfPkg: QemuBootOrderLib: parse OFW device path nodes of PCI bridges
When the Q35 machine type(s) of QEMU are used with libvirt, libvirt tends
to place some devices behind PCI bridges. This is then reflected in the
"bootorder" fw_cfg file. For example:

  /pci@i0cf8/pci-bridge@1e/pci-bridge@1/scsi@5/disk@0,0
  /pci@i0cf8/pci-bridge@1e/pci-bridge@1/scsi@3/channel@0/disk@0,0

As yet QemuBootOrderLib doesn't support such OFW device paths.

Add code that translates a sequence of pci-bridge nodes.

In practice libvirt seems to insert two such nodes (*), hence increment
EXAMINED_OFW_NODES with the same number.

(* Background, paraphrasing Laine Stump's words:

When the machine type is Q35, we create a dmi-to-pci bridge coming off of
the pcie root controller, and a pci-to-pci bridge coming off of that, then
attach most devices to the pci-to-pci bridge. This is done because you
can't hotplug into pcie-root, can't (or at least shouldn't) plug a
pci-to-pci bridge into pcie-root (so the next one has to be
dmi-to-pci-bridge), and can't hotplug into dmi-to-pci-bridge (so you need
to have a pci-to-pci bridge).)

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@17385 6f19259b-4bc3-4df7-8a09-765794883524
2015-05-08 18:12:44 +00:00
..
AcpiTimerLib OvmfPkg: Q35: Use correct ACPI PM control register:bit 2015-03-26 19:06:07 +00:00
EmuVariableFvbLib OvmfPkg EMU FVB: Add 2 functions to PlatformFvbLib 2011-01-09 03:51:16 +00:00
LoadLinuxLib OvmfPkg LoadLinuxLib: Convert X64/JumpToKernel.asm to NASM 2014-10-31 20:54:31 +00:00
LockBoxLib OvmfPkg: implement LockBoxLib 2014-03-04 08:03:23 +00:00
NvVarsFileLib Fix VS2013 build failure. 2014-08-13 06:31:08 +00:00
PlatformBdsLib OvmfPkg/PlatformBdsLib: Signal ReadyToBoot before booting QEMU kernel 2015-02-17 00:05:36 +00:00
PlatformDebugLibIoPort OvmfPkg: Update PlatformBaseDebugLibIoPort library 2015-02-06 06:38:37 +00:00
PlatformFvbLibNull OvmfPkg EMU FVB: Add 2 functions to PlatformFvbLib 2011-01-09 03:51:16 +00:00
PlatformSecureLib OvmfPkg: Add custom mode setup if the Secure Boot build option is specified. 2012-04-04 17:35:06 +00:00
QemuBootOrderLib OvmfPkg: QemuBootOrderLib: parse OFW device path nodes of PCI bridges 2015-05-08 18:12:44 +00:00
QemuFwCfgLib OvmfPkg QemuFwCfgLib: Convert X64/IoLibExAsm.asm to NASM 2014-10-31 20:54:54 +00:00
ResetSystemLib OvmfPkg ResetSystemLib: Fix VS build error 2013-08-19 04:15:26 +00:00
SerializeVariablesLib OvmfPkg/SerializeVariablesLib: ignore secure variable restore errors 2013-05-28 17:21:37 +00:00
VirtioLib OvmfPkg/Virtio: Removed VirtioReadDevice() / VirtIoWriteDevice() functions 2013-12-11 16:58:39 +00:00
VirtioMmioDeviceLib OvmfPkg/VirtioMmioDeviceLib: Implement VIRTIO_DEVICE_PROTOCOL for VirtIo Devices over MMIO 2013-12-11 16:57:59 +00:00
XenConsoleSerialPortLib OvmfPkg: XenConsoleSerialPortLib: deal with output overflow 2015-03-27 21:25:16 +00:00
XenHypercallLib OvmfPkg: replace strict XenHypercallLib construction with explicit query 2015-03-03 08:13:40 +00:00
XenIoMmioLib ArmVirtualizationPkg: add XenIoMmioLib 2015-02-28 20:34:16 +00:00