]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmVirtPkg: remove QemuVideoDxe from ArmVirtQemu and ArmVirtQemuKernel
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 22 Aug 2017 16:30:13 +0000 (17:30 +0100)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 24 Aug 2017 12:15:38 +0000 (13:15 +0100)
One of the reasons for introducing virtio-gpu support to OvmfPkg and
ArmVirtpkg was the fact that under KVM virtualization on ARM, the
legacy VGA cannot be used reliably. This is due to an implementation
detail of QEMU+KVM, which remaps cached host memory into the guest
address space as a framebuffer behind a PCI BAR. Given that the purpose
of a memory mapped framebuffer is its side effects, such BARs should
never be mapped cacheable in the guest, and the mismatched attributes
between host and guest result in a loss of coherency, visible as
corruption in the framebuffer image.

This issue does not occur under TCG emulation, nor did we expect it to
actually bring down the guest under KVM, and so it was deemed harmless
to keep support for the VGA device as well. However, as it turns out,
the fact that the framebuffer BAR is mapped using device semantics by
default may result in unalignment faults when we use the ordinary string
copy routines on the contents. In theory, we could work around this by
remapping the BAR as write combining, but it appears the generic PCI
bus driver does not actually implement this.

So let's remove the QemuVideoDxe driver altogether. This may result
in loss of functionality for use cases that rely on the framebuffer
to be directly addressable (such as EFIFB), but given that this never
worked reliably under KVM in the first place, let's not let that stop
us from dropping support for it.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
ArmVirtPkg/ArmVirtQemu.dsc
ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc
ArmVirtPkg/ArmVirtQemuKernel.dsc

index e23a6d17bc44334f5c48bc3a013ada2752323d49..2e6e762249874b9b1228d7be46eca1e61eadad1d 100644 (file)
@@ -57,7 +57,6 @@
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf\r
   PlatformBootManagerLib|ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf\r
   CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf\r
-  FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf\r
   QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf\r
   FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf\r
   PciPcdProducerLib|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf\r
   #\r
   # Video support\r
   #\r
-  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
   OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
   OvmfPkg/PlatformDxe/Platform.inf\r
 \r
index 237b2d03a714afef5af94abedaa135e65f29d9a3..3194aa3edc8e0713071eff391a9acebad77db5b7 100644 (file)
@@ -167,7 +167,6 @@ READ_LOCK_STATUS   = TRUE
   #\r
   # Video support\r
   #\r
-  INF OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
   INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
   INF OvmfPkg/PlatformDxe/Platform.inf\r
 \r
index aa01debfda6914bb3364df37ccdf39fae1b91d82..69de887277cb58b644cfcad3072237f657d782e4 100644 (file)
@@ -57,7 +57,6 @@
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf\r
   PlatformBootManagerLib|ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf\r
   CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf\r
-  FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf\r
   QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf\r
   FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf\r
   PciPcdProducerLib|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf\r
   #\r
   # Video support\r
   #\r
-  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
   OvmfPkg/VirtioGpuDxe/VirtioGpu.inf\r
   OvmfPkg/PlatformDxe/Platform.inf\r
 \r