On 19 August 2016 at 14:49, Laszlo Ersek <ler...@redhat.com> wrote: > 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.biesheu...@linaro.org> > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Ref: https://tianocore.acgmultimedia.com/show_bug.cgi?id=66 > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <ler...@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > --- > ArmVirtPkg/ArmVirtPkg.dec | 24 -------------------- > ArmVirtPkg/ArmVirtQemu.dsc | 3 --- > ArmVirtPkg/ArmVirtQemuKernel.dsc | 3 --- > ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf | 1 - > ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c | 3 +-- > 5 files changed, 1 insertion(+), 33 deletions(-) > > diff --git a/ArmVirtPkg/ArmVirtPkg.dec b/ArmVirtPkg/ArmVirtPkg.dec > index 9f98f28f01e1..a5ec42166445 100644 > --- a/ArmVirtPkg/ArmVirtPkg.dec > +++ b/ArmVirtPkg/ArmVirtPkg.dec > @@ -58,36 +58,12 @@ [PcdsFixedAtBuild, PcdsPatchableInModule] > # EFI_VT_100_GUID. > > # > > 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 > > # > > # Inhibit installation of the FDT as a configuration table if this feature > > # PCD is TRUE. Otherwise, the OS is presented with both a DT and an ACPI > > # description of the platform, and it is up to the OS to choose. > > # > > diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc > index 2eb2780a1fca..1d459756f61b 100644 > --- a/ArmVirtPkg/ArmVirtQemu.dsc > +++ b/ArmVirtPkg/ArmVirtQemu.dsc > @@ -97,15 +97,12 @@ [PcdsFeatureFlag.common] > > > ## If TRUE, Graphics Output Protocol will be installed on virtual handle > created by ConsplitterDxe. > > # It could be set FALSE to save size. > > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE > > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE > > > > - # Activate KVM workaround for now. > > - gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached|TRUE > > - > > !if $(PURE_ACPI_BOOT_ENABLE) == TRUE > > gArmVirtTokenSpaceGuid.PcdPureAcpiBoot|TRUE > > !endif > > > > [PcdsFixedAtBuild.common] > > gArmPlatformTokenSpaceGuid.PcdCoreCount|1 > > diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc > b/ArmVirtPkg/ArmVirtQemuKernel.dsc > index d9e62c78d28e..99d2feba202b 100644 > --- a/ArmVirtPkg/ArmVirtQemuKernel.dsc > +++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc > @@ -98,15 +98,12 @@ [PcdsFeatureFlag.common] > > > ## If TRUE, Graphics Output Protocol will be installed on virtual handle > created by ConsplitterDxe. > > # It could be set FALSE to save size. > > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE > > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE > > > > - # Activate KVM workaround for now. > > - gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached|TRUE > > - > > [PcdsFixedAtBuild.common] > > gArmPlatformTokenSpaceGuid.PcdCoreCount|1 > > !if $(ARCH) == AARCH64 > > gArmTokenSpaceGuid.PcdVFPEnabled|1 > > !endif > > > > diff --git a/ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf > b/ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf > index 41e134b24b0e..8c75eda3deb5 100644 > --- a/ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf > +++ b/ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf > @@ -53,13 +53,12 @@ [Protocols] > gFdtClientProtocolGuid ## CONSUMES > > > > [Pcd] > > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress > > > > [FeaturePcd] > > - gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached > > gArmVirtTokenSpaceGuid.PcdPureAcpiBoot > > > > [depex] > > gEfiMetronomeArchProtocolGuid AND > > gEfiCpuArchProtocolGuid AND > > gFdtClientProtocolGuid > > diff --git a/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c > b/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c > index 4b2b6a562a3f..5063782bb392 100644 > --- a/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c > +++ b/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c > @@ -362,14 +362,13 @@ InitializePciHostBridge ( > EfiGcdIoTypeIo, > > IoBase, > > IoSize > > ); > > ASSERT_EFI_ERROR (Status); > > > > - MmioAttributes = FeaturePcdGet (PcdKludgeMapPciMmioAsCached) ? > > - EFI_MEMORY_WB : EFI_MEMORY_UC; > > + MmioAttributes = EFI_MEMORY_UC; > > > > Status = gDS->AddMemorySpace ( > > EfiGcdMemoryTypeMemoryMappedIo, > > MmioBase, > > MmioSize, > > MmioAttributes > > -- > 2.9.2 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel