]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
MdeModulePkg/UfsPciHcDxe: Fix EBC build error
[mirror_edk2.git] / ArmPlatformPkg / ArmVirtualizationPkg / Library / ArmVirtualizationMemoryInitPeiLib / ArmVirtualizationMemoryInitPeiLib.c
index 5f6cd059c47fa4d242ccdef8f45426ccef74db37..8ce63b4596e2c08148116031e48729ebf219fb5e 100644 (file)
@@ -20,6 +20,7 @@
 #include <Library/HobLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/PcdLib.h>\r
+#include <Library/CacheMaintenanceLib.h>\r
 \r
 VOID\r
 BuildMemoryTypeInformationHob (\r
@@ -79,6 +80,15 @@ MemoryPeim (
       PcdGet64 (PcdSystemMemorySize)\r
   );\r
 \r
+  //\r
+  // When running under virtualization, the PI/UEFI memory region may be\r
+  // clean but not invalidated in system caches or in lower level caches\r
+  // on other CPUs. So invalidate the region by virtual address, to ensure\r
+  // that the contents we put there with the caches and MMU off will still\r
+  // be visible after turning them on.\r
+  //\r
+  InvalidateDataCacheRange ((VOID*)(UINTN)UefiMemoryBase, UefiMemorySize);\r
+\r
   // Build Memory Allocation Hob\r
   InitMmu ();\r
 \r