]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: don't assign PCI BARs above 4GiB when CSM enabled
authorDavid Woodhouse <dwmw2@infradead.org>
Wed, 26 Jun 2019 11:37:42 +0000 (12:37 +0100)
committerLaszlo Ersek <lersek@redhat.com>
Wed, 26 Jun 2019 13:06:44 +0000 (15:06 +0200)
Mostly, this is only necessary for devices that the CSM might have
native support for, such as VirtIO and NVMe; PciBusDxe will already
degrade devices to 32-bit if they have an OpROM.

However, there doesn't seem to be a generic way of requesting PciBusDxe
to downgrade specific devices.

There's IncompatiblePciDeviceSupportProtocol but that doesn't provide
the PCI class information or a handle to the device itself, so there's
no simple way to just match on all NVMe devices, for example.

Just leave gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size set to zero for
CSM builds, until/unless that can be fixed.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20190626113742.819933-5-dwmw2@infradead.org>

OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc

index 639e33cb285fd84fa032c3a95ffd812fe9cdbe5e..ad20531ceb8b9ded14fa6fa3fc838ed5d930125b 100644 (file)
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0\r
+!ifdef $(CSM_ENABLE)\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x0\r
+!else\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000\r
+!endif\r
 \r
   gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
 \r
 \r
   gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
 \r
index 69a3497c2c9ed1f27af39d133996c877fca324fc..0542ac2235b4ad9f02be6381ba933057ac5f7d3a 100644 (file)
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0\r
+!ifdef $(CSM_ENABLE)\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x0\r
+!else\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000\r
+!endif\r
 \r
   gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
 \r
 \r
   gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0\r
 \r