On Sat, Jan 29, 2022 at 16:13:46 +0100, Ard Biesheuvel wrote:
> Alex reports that the cache invalidation performed by
> ArmVirtMemoryInitPeiLib takes a non-negligible amount of time at boot.
> This cache invalidation used to be necessary to avoid inconsistencies
> between the CPU's cached and uncached views of the permanent PEI memory
> region, given that the PEI phase is where the MMU gets enabled.
> 
> The only allocations done from permanent PEI memory with the MMU off are
> pages used for page tables, and since commit 748fea6279ef
> ("ArmPkg/ArmMmuLib AARCH64: invalidate page tables before populating
> them"), each of those is invalidated in the caches explicitly, for
> reasons described in the patch's commit log. All other allocations done
> in PEI are either from temporary PEI memory, which includes the stack,
> or from permanent PEI memory but after the MMU has been enabled.
> 
> This means that the cache invalidation in ArmVirtMemoryInitPeiLib is no
> longer necessary, and can simply be dropped.
> 
> Cc: Alexander Graf <ag...@csgraf.de>
> Signed-off-by: Ard Biesheuvel <a...@kernel.org>

Reviewed-by: Leif Lindholm <l...@nuviainc.com>

> ---
>  .../ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c    | 9 ---------
>  1 file changed, 9 deletions(-)
> 
> diff --git 
> a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c 
> b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
> index 022e13e762b6..98d90ad4200d 100644
> --- a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
> +++ b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
> @@ -91,15 +91,6 @@ MemoryPeim (
>        );
>    }
>  
> -  //
> -  // 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 ();
>  
> -- 
> 2.30.2
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86247): https://edk2.groups.io/g/devel/message/86247
Mute This Topic: https://groups.io/mt/88767635/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to