]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/IndustryStandard: define PCI Capabilities for QEMU's PCI Bridges
authorLaszlo Ersek <lersek@redhat.com>
Thu, 21 Sep 2017 09:38:47 +0000 (11:38 +0200)
committerLaszlo Ersek <lersek@redhat.com>
Tue, 3 Oct 2017 14:07:29 +0000 (16:07 +0200)
QEMU has recently gained the ability to provide various hints about its
PCI bridges. The hints take the form of vendor-specific PCI capabilities.
Define macros and types under "OvmfPkg/Include/IndustryStandard" to
describe these capabilities.

The definitions correspond to "docs/pcie_pci_bridge.txt" in the QEMU tree.
Said documentation was added in the last commit of the following series:

  a35fe226558a hw/pci: introduce pcie-pci-bridge device
  70e1ee59bb94 hw/pci: introduce bridge-only vendor-specific capability to
               provide some hints to firmware
  226263fb5cda hw/pci: add QEMU-specific PCI capability to the Generic PCI
               Express Root Port
  c1800a162765 docs: update documentation considering PCIE-PCI bridge

We are going to parse the Resource Reservation Capability in
OvmfPkg/PciHotPlugInitDxe, and return the reservation requests to
PciBusDxe.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
OvmfPkg/Include/IndustryStandard/QemuPciBridgeCapabilities.h [new file with mode: 0644]

diff --git a/OvmfPkg/Include/IndustryStandard/QemuPciBridgeCapabilities.h b/OvmfPkg/Include/IndustryStandard/QemuPciBridgeCapabilities.h
new file mode 100644 (file)
index 0000000..bf2373c
--- /dev/null
@@ -0,0 +1,60 @@
+/** @file\r
+  Macro and type definitions for QEMU's Red Hat vendor-specific PCI\r
+  capabilities that provide various hints about PCI Bridges.\r
+\r
+  Refer to "docs/pcie_pci_bridge.txt" in the QEMU source directory.\r
+\r
+  Copyright (C) 2017, Red Hat, Inc.\r
+\r
+  This program and the accompanying materials are licensed and made available\r
+  under the terms and conditions of the BSD License which accompanies this\r
+  distribution. The full text of the license may be found at\r
+  http://opensource.org/licenses/bsd-license.php\r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
+  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+\r
+#ifndef __QEMU_PCI_BRIDGE_CAPABILITIES_H__\r
+#define __QEMU_PCI_BRIDGE_CAPABILITIES_H__\r
+\r
+#include <IndustryStandard/Pci23.h>\r
+\r
+//\r
+// The hints apply to PCI Bridges whose PCI_DEVICE_INDEPENDENT_REGION.VendorId\r
+// equals the following value.\r
+//\r
+#define QEMU_PCI_BRIDGE_VENDOR_ID_REDHAT 0x1B36\r
+\r
+//\r
+// Common capability header for all hints.\r
+//\r
+#pragma pack (1)\r
+typedef struct {\r
+  EFI_PCI_CAPABILITY_VENDOR_HDR VendorHdr;\r
+  UINT8                         Type;\r
+} QEMU_PCI_BRIDGE_CAPABILITY_HDR;\r
+#pragma pack ()\r
+\r
+//\r
+// Values defined for QEMU_PCI_BRIDGE_CAPABILITY_HDR.Type.\r
+//\r
+#define QEMU_PCI_BRIDGE_CAPABILITY_TYPE_RESOURCE_RESERVATION 0x01\r
+\r
+//\r
+// PCI Resource Reservation structure for when\r
+// QEMU_PCI_BRIDGE_CAPABILITY_HDR.Type equals\r
+// QEMU_PCI_BRIDGE_CAPABILITY_TYPE_RESOURCE_RESERVATION.\r
+//\r
+#pragma pack (1)\r
+typedef struct {\r
+  QEMU_PCI_BRIDGE_CAPABILITY_HDR BridgeHdr;\r
+  UINT32                         BusNumbers;\r
+  UINT64                         Io;\r
+  UINT32                         NonPrefetchable32BitMmio;\r
+  UINT32                         Prefetchable32BitMmio;\r
+  UINT64                         Prefetchable64BitMmio;\r
+} QEMU_PCI_BRIDGE_CAPABILITY_RESOURCE_RESERVATION;\r
+#pragma pack ()\r
+\r
+#endif\r