From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x230.google.com (mail-wm0-x230.google.com [IPv6:2a00:1450:400c:c09::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2EDA821E49BB7 for ; Tue, 22 Aug 2017 09:27:58 -0700 (PDT) Received: by mail-wm0-x230.google.com with SMTP id r187so1618575wma.0 for ; Tue, 22 Aug 2017 09:30:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=OAu7XZQsYezFAFNDD62XCuYoRZld4JrFhaWL4pVSR70=; b=b7+MMWJdyJRVQR4X563tqTs9y0J4gPNVyt1RO3Nmj39ZzQ4apQphSlbIVcvqHooPXt o0pvWJefhMTJbM9Vn/helqQbS509UeVRqgTaAn+rxbv07OumP+x5znQxOtAFFbwk6XR0 ZA8yQojIRQ8mR/H5aPSeFYymJm89THTb14rOk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=OAu7XZQsYezFAFNDD62XCuYoRZld4JrFhaWL4pVSR70=; b=QGl7s3Am7+lXnFRCJEOqdBumUQr+/pG5J9t9Q3sqHj4tAH6u2YhI2vo6OE/chbrGm6 d72e9c3JgmS6G29XKxoTnIDFO/MavNuAnDMUxYU7IlnAdYWfgOqzKzpeGRXKmCtyWNX6 YdtP/qezRlOxtj9bgwA7jdQTe082zDmOS6DL7OSsQ0eqUyKAgqru2q2mxGssLKo2zHeR D6hdQFZfeVoP59EpZeY2wMJl8UL89x3XUU5AxG4L/miWM+xzafyWRLbF/9mZK+jOjjex d8jxts8oHgzMlavOSJTC3G9D3QBR7JRegGnDVE03ClwHLY+cKH1ATMM0DmtjhZDpms2u 26Rg== X-Gm-Message-State: AHYfb5hD70nt4ZSMR+p2C8zm85QKwXqKVq1g6NY4K3zJ1wR6tEaxrDDP D0hTO0WEDQg37gK1P8WdJw== X-Received: by 10.28.67.67 with SMTP id q64mr110121wma.147.1503419429292; Tue, 22 Aug 2017 09:30:29 -0700 (PDT) Received: from localhost.localdomain ([154.146.161.128]) by smtp.gmail.com with ESMTPSA id 77sm9098891wmt.39.2017.08.22.09.30.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Aug 2017 09:30:28 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org Cc: lersek@redhat.com, leif.lindholm@linaro.org, jordan.l.justen@intel.com, Ard Biesheuvel Date: Tue, 22 Aug 2017 17:30:13 +0100 Message-Id: <20170822163013.12233-1-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 Subject: [PATCH] ArmVirtPkg: remove QemuVideoDxe from ArmVirtQemu and ArmVirtQemuKernel X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Aug 2017 16:27:58 -0000 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 --- ArmVirtPkg/ArmVirtQemu.dsc | 2 -- ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc | 1 - ArmVirtPkg/ArmVirtQemuKernel.dsc | 2 -- 3 files changed, 5 deletions(-) diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index e23a6d17bc44..2e6e76224987 100644 --- a/ArmVirtPkg/ArmVirtQemu.dsc +++ b/ArmVirtPkg/ArmVirtQemu.dsc @@ -57,7 +57,6 @@ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf PlatformBootManagerLib|ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf - FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf PciPcdProducerLib|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf @@ -357,7 +356,6 @@ # # Video support # - OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf OvmfPkg/VirtioGpuDxe/VirtioGpu.inf OvmfPkg/PlatformDxe/Platform.inf diff --git a/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc b/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc index 237b2d03a714..3194aa3edc8e 100644 --- a/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc +++ b/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc @@ -167,7 +167,6 @@ READ_LOCK_STATUS = TRUE # # Video support # - INF OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf INF OvmfPkg/PlatformDxe/Platform.inf diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKernel.dsc index aa01debfda69..69de887277cb 100644 --- a/ArmVirtPkg/ArmVirtQemuKernel.dsc +++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc @@ -57,7 +57,6 @@ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf PlatformBootManagerLib|ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf - FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf PciPcdProducerLib|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf @@ -348,7 +347,6 @@ # # Video support # - OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf OvmfPkg/VirtioGpuDxe/VirtioGpu.inf OvmfPkg/PlatformDxe/Platform.inf -- 2.11.0