On Thu, Apr 9, 2015 at 4:28 AM, Ard Biesheuvel
<ard.biesheu...@linaro.org> wrote:
> This updates ArmVirtualizationMemoryInitPeiLib so that the PEI memory
> region, i.e., the region that is used both before and after the MMU
> and caches are enabled, is invalidated by virtual address before
> enabling the MMU.
>
> This prevents issues where data we modified with the caches and MMU
> off may be shadowed by clean cachelines in system caches or in lower
> level caches on other CPUs, resulting in the this data to become
> invisible once we turn the MMU and caches on.
>
> Also reduce the size of the region to 16 MB (from 64 MB), to reduce
> the potential performance hit from invalidating the entire region by
> virtual address.
This bit of the patch is removed, so this bit of the commit message
should go too :)
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Reviewed-By: Olivier Martin <olivier.mar...@arm.com>
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  
> ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
>    | 10 ++++++++++
>  
> ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf
>  |  1 +
>  2 files changed, 11 insertions(+)
>
> diff --git 
> a/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
>  
> b/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
> index 5f6cd059c47f..8ce63b4596e2 100644
> --- 
> a/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
> +++ 
> b/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
> @@ -20,6 +20,7 @@
>  #include <Library/HobLib.h>
>  #include <Library/MemoryAllocationLib.h>
>  #include <Library/PcdLib.h>
> +#include <Library/CacheMaintenanceLib.h>
>
>  VOID
>  BuildMemoryTypeInformationHob (
> @@ -79,6 +80,15 @@ MemoryPeim (
>        PcdGet64 (PcdSystemMemorySize)
>    );
>
> +  //
> +  // When running under virtualization, the PI/UEFI memory region may be
> +  // clean but not invalidated in system caches or in lower level caches
> +  // on other CPUs. So invalidate the region by virtual address, to ensure
> +  // that the contents we put there with the caches and MMU off will still
> +  // be visible after turning them on.
> +  //
> +  InvalidateDataCacheRange ((VOID*)(UINTN)UefiMemoryBase, UefiMemorySize);
> +
>    // Build Memory Allocation Hob
>    InitMmu ();
>
> diff --git 
> a/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf
>  
> b/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf
> index fcdae06de7c2..b8a19c993d91 100644
> --- 
> a/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf
> +++ 
> b/ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf
> @@ -35,6 +35,7 @@
>    HobLib
>    ArmLib
>    ArmPlatformLib
> +  CacheMaintenanceLib
>
>  [Guids]
>    gEfiMemoryTypeInformationGuid
> --
> 1.8.3.2
>

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to