]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: Don't build in QemuVideoDxe when we have CSM
authorDavid Woodhouse <dwmw2@infradead.org>
Wed, 26 Jun 2019 11:37:41 +0000 (12:37 +0100)
committerLaszlo Ersek <lersek@redhat.com>
Wed, 26 Jun 2019 13:06:44 +0000 (15:06 +0200)
QemuVideoDxe installs its own legacy INT 10h handler for the benefit of
systems like Windows 2008r2 which attempt to use INT 10h even when booted
via EFI.

This interacts extremely badly with a CSM actually attempting to install
a real video BIOS.

The last thing done before invoking a legacy OpROM is to call INT 10h to
set a plain text mode. In the case where it's the video BIOS OpROM being
loaded, INT 10h will normally point to an iret stub in the CSM itself.

Unless QemuVideoDxe has changed INT10h to point to a location in the
0xC0000 segment that it didn't allocate properly, so the real OpROM has
been shadowed over them top of it, and the INT 10h vector now points to
some random place in the middle of the newly-shadowed OpROM.

Don't Do That Then. QemuVideoDxe doesn't do any acceleration and just
sets up a linear framebuffer, so we don't lose much by just
unconditionally using BiosVideoDxe instead when CSM is present.

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

OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32.fdf
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgIa32X64.fdf
OvmfPkg/OvmfPkgX64.dsc
OvmfPkg/OvmfPkgX64.fdf

index 473eaba2461302582516cbb13409dcc63a4524a6..87716123997ab3e8223616face54245c8e56a984 100644 (file)
   MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf\r
   MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
 \r
+!ifndef $(CSM_ENABLE)\r
   OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
+!endif\r
   OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf\r
   OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
 \r
index 14100356b4f6df68962ecb3fc8da43bd80f0cff3..785affeb90c80eddfe1ce11fb671e9c1de4b1ae8 100644 (file)
@@ -305,9 +305,10 @@ INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
 INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf\r
 INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf\r
 INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf\r
+!else\r
+INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 !endif\r
 \r
-INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf\r
 INF  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
 INF  OvmfPkg/PlatformDxe/Platform.inf\r
index 73f33b721832c2b22fdf7b38b9bcfab3b8107882..639e33cb285fd84fa032c3a95ffd812fe9cdbe5e 100644 (file)
   MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf\r
   MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
 \r
+!ifndef $(CSM_ENABLE)\r
   OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
+!endif\r
   OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf\r
   OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
 \r
index 5af3cdc93d20ce12374dae1353b3f9cedea43178..74407072563b535b04690f7b20f762e3be8c35ab 100644 (file)
@@ -311,9 +311,10 @@ INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
 INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf\r
 INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf\r
 INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf\r
+!else\r
+INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 !endif\r
 \r
-INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf\r
 INF  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
 INF  OvmfPkg/PlatformDxe/Platform.inf\r
index 39ac791565295b5729e3155f640ed3dbac8ab2c9..69a3497c2c9ed1f27af39d133996c877fca324fc 100644 (file)
   MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf\r
   MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
 \r
+!ifndef $(CSM_ENABLE)\r
   OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
+!endif\r
   OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf\r
   OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
 \r
index 5af3cdc93d20ce12374dae1353b3f9cedea43178..74407072563b535b04690f7b20f762e3be8c35ab 100644 (file)
@@ -311,9 +311,10 @@ INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
 INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf\r
 INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf\r
 INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf\r
+!else\r
+INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 !endif\r
 \r
-INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf\r
 INF  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
 INF  OvmfPkg/PlatformDxe/Platform.inf\r