Going forward, two modules will need to know about the aperture:
PlatformPei (as before), and OVMF's upcoming PciHostBridgeLib instance
(because the core PciHostBridgeDxe driver requires the library to state
the exact apertures for all root bridges).
On QEMU, all root bridges share the same MMIO aperture, hence one pair of
PCDs suffices.
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Marcel Apfelbaum <marcel@redhat.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>
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0|UINT16|0x1b\r
gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE|BOOLEAN|0x21\r
\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0|UINT16|0x1b\r
gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE|BOOLEAN|0x21\r
\r
+ ## The 32-bit MMIO aperture shared by all PCI root bridges.\r
+ #\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0|UINT64|0x24\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0|UINT64|0x25\r
+\r
[PcdsFeatureFlag]\r
gUefiOvmfPkgTokenSpaceGuid.PcdSecureBootEnable|FALSE|BOOLEAN|3\r
gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c\r
[PcdsFeatureFlag]\r
gUefiOvmfPkgTokenSpaceGuid.PcdSecureBootEnable|FALSE|BOOLEAN|3\r
gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
\r
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
\r
\r
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
\r
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
\r
\r
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800\r
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
\r
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
\r
\r
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
\r
if (!mXen) {\r
UINT32 TopOfLowRam;\r
UINT32 PciBase;\r
if (!mXen) {\r
UINT32 TopOfLowRam;\r
UINT32 PciBase;\r
\r
TopOfLowRam = GetSystemMemorySizeBelow4gb ();\r
if (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID) {\r
\r
TopOfLowRam = GetSystemMemorySizeBelow4gb ();\r
if (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID) {\r
// 0xFED20000 gap 896 KB\r
// 0xFEE00000 LAPIC 1 MB\r
//\r
// 0xFED20000 gap 896 KB\r
// 0xFEE00000 LAPIC 1 MB\r
//\r
- AddIoMemoryRangeHob (PciBase, 0xFC000000);\r
+ PciSize = 0xFC000000 - PciBase;\r
+ AddIoMemoryBaseSizeHob (PciBase, PciSize);\r
+ PcdSet64 (PcdPciMmio32Base, PciBase);\r
+ PcdSet64 (PcdPciMmio32Size, PciSize);\r
AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB);\r
AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB);\r
if (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID) {\r
AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB);\r
AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB);\r
if (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID) {\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId\r
gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase\r
gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId\r
gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase\r
gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd\r
gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes\r
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd\r
gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes\r
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize\r