ArmVirtPkg: remove PcdKludgeMapPciMmioAsCached

In ARM/AARCH64 guests that run on KVM, we can now use virtio-gpu-pci, so
PcdKludgeMapPciMmioAsCached is no longer necessary. Standard VGA continues
to work on TCG without the kludge.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Ref: https://tianocore.acgmultimedia.com/show_bug.cgi?id=66
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Laszlo Ersek 2016-08-18 11:51:33 +02:00
parent 8731debefd
commit 3ef3209d30
5 changed files with 1 additions and 33 deletions

View File

@ -60,30 +60,6 @@
gArmVirtTokenSpaceGuid.PcdTerminalTypeGuidBuffer|{0x65, 0x60, 0xA6, 0xDF, 0x19, 0xB4, 0xD3, 0x11, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}|VOID*|0x00000007
[PcdsFeatureFlag]
#
# "Map PCI MMIO as Cached"
#
# Due to the way Stage1 and Stage2 mappings are combined on Aarch64, and
# because KVM -- for the time being -- does not try to interfere with the
# Stage1 mappings, we must not set EFI_MEMORY_UC for emulated PCI MMIO
# regions.
#
# EFI_MEMORY_UC is mapped to Device-nGnRnE, and that Stage1 attribute would
# direct guest writes to host DRAM immediately, bypassing the cache
# regardless of Stage2 attributes. However, QEMU's reads of the same range
# can easily be served from the (stale) CPU cache.
#
# Setting this PCD to TRUE will use EFI_MEMORY_WB for mapping PCI MMIO
# regions, which ensures that guest writes to such regions go through the CPU
# cache. Strictly speaking this is wrong, but it is needed as a temporary
# workaround for emulated PCI devices. Setting the PCD to FALSE results in
# the theoretically correct EFI_MEMORY_UC mapping, and should be the long
# term choice, especially with assigned devices.
#
# The default is to turn off the kludge; DSC's can selectively enable it.
#
gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached|FALSE|BOOLEAN|0x00000006
#
# Pure ACPI boot
#

View File

@ -100,9 +100,6 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
# Activate KVM workaround for now.
gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached|TRUE
!if $(PURE_ACPI_BOOT_ENABLE) == TRUE
gArmVirtTokenSpaceGuid.PcdPureAcpiBoot|TRUE
!endif

View File

@ -101,9 +101,6 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
# Activate KVM workaround for now.
gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached|TRUE
[PcdsFixedAtBuild.common]
gArmPlatformTokenSpaceGuid.PcdCoreCount|1
!if $(ARCH) == AARCH64

View File

@ -365,8 +365,7 @@ InitializePciHostBridge (
);
ASSERT_EFI_ERROR (Status);
MmioAttributes = FeaturePcdGet (PcdKludgeMapPciMmioAsCached) ?
EFI_MEMORY_WB : EFI_MEMORY_UC;
MmioAttributes = EFI_MEMORY_UC;
Status = gDS->AddMemorySpace (
EfiGcdMemoryTypeMemoryMappedIo,

View File

@ -56,7 +56,6 @@
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
[FeaturePcd]
gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached
gArmVirtTokenSpaceGuid.PcdPureAcpiBoot
[depex]