]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c
ArmVirtualizationPkg/PciHostBridgeDxe: MMIO aperture must not be uncached
[mirror_edk2.git] / ArmPlatformPkg / ArmVirtualizationPkg / PciHostBridgeDxe / PciHostBridge.c
index 452465afa8f34b5aa1012e9b94ac1099e8efe5ec..17d4db85bebf4013bd415989d03645fcef9bbb7c 100644 (file)
@@ -97,6 +97,7 @@ InitializePciHostBridge (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
+  UINT64                      MmioAttributes;\r
   EFI_STATUS                  Status;\r
   UINTN                       Loop1;\r
   UINTN                       Loop2;\r
@@ -133,17 +134,31 @@ InitializePciHostBridge (
                   );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
+  MmioAttributes = FeaturePcdGet (PcdKludgeMapPciMmioAsCached) ?\r
+                   EFI_MEMORY_WB : EFI_MEMORY_UC;\r
+\r
   Status = gDS->AddMemorySpace (\r
                   EfiGcdMemoryTypeMemoryMappedIo,\r
                   PcdGet32 (PcdPciMmio32Base),\r
                   PcdGet32 (PcdPciMmio32Size),\r
-                  EFI_MEMORY_UC\r
+                  MmioAttributes\r
                   );\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((EFI_D_ERROR, "%a: AddMemorySpace: %r\n", __FUNCTION__, Status));\r
     return Status;\r
   }\r
 \r
+  Status = gDS->SetMemorySpaceAttributes (\r
+                  PcdGet32 (PcdPciMmio32Base),\r
+                  PcdGet32 (PcdPciMmio32Size),\r
+                  MmioAttributes\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "%a: SetMemorySpaceAttributes: %r\n", __FUNCTION__,\r
+      Status));\r
+    return Status;\r
+  }\r
+\r
   //\r
   // Create Host Bridge Device Handle\r
   //\r