On Tue, Nov 03, 2015 at 01:51:46PM +0000, Cohen, Eugene wrote:
> Please don't remove this functionality.  At times we do want to use
> this library to turn off the cache in preparation for going to another
> environment (say, loading an OS) and this is useful.

Could you elaborate on your use-case?

Given the unreliability of Set/Way operations, they may not achieve the
guarantees that you require. They are not guaranted to push data to the
PoC (i.e. memory), cannot drain system caches (e.g. external L3s), etc.

Mark.

> Eugene
> 
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Ard 
> Biesheuvel
> Sent: Tuesday, November 03, 2015 3:17 AM
> To: edk2-devel@lists.01.org; leif.lindh...@linaro.org; mark.rutl...@arm.com
> Cc: ler...@redhat.com; Ard Biesheuvel <ard.biesheu...@linaro.org>
> Subject: [edk2] [PATCH 08/10] ArmCacheMaintenanceLib: disallow whole D-cache 
> maintenance operations
> 
> The ARM architecture provides no reliable way to clean or invalidate the 
> entire data cache at runtime. The reason is that such maintenance requires 
> the use of set/way maintenance operations, which are suitable only for the 
> kind of maintenance that is carried out when the cache is taken offline 
> entirely.
> 
> So ASSERT () when any of the CacheMaintenanceLib whole data cache routines 
> are invoked rather than pretending we can do anything meaningful here.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c 
> b/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c
> index 175d29496c32..8cc1990b3266 100644
> --- a/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c
> +++ b/ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.c
> @@ -14,6 +14,7 @@
>  **/
>  #include <Base.h>
>  #include <Library/ArmLib.h>
> +#include <Library/DebugLib.h>
>  #include <Library/PcdLib.h>
>  
>  VOID
> @@ -44,7 +45,6 @@ InvalidateInstructionCache (
>    VOID
>    )
>  {
> -  ArmCleanDataCache();
>    ArmInvalidateInstructionCache();
>  }
>  
> @@ -54,7 +54,7 @@ InvalidateDataCache (
>    VOID
>    )
>  {
> -  ArmInvalidateDataCache();
> +  ASSERT (FALSE);
>  }
>  
>  VOID *
> @@ -76,7 +76,7 @@ WriteBackInvalidateDataCache (
>    VOID
>    )
>  {
> -  ArmCleanInvalidateDataCache();
> +  ASSERT (FALSE);
>  }
>  
>  VOID *
> @@ -96,7 +96,7 @@ WriteBackDataCache (
>    VOID
>    )
>  {
> -  ArmCleanDataCache();
> +  ASSERT (FALSE);
>  }
>  
>  VOID *
> --
> 1.9.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to