From e266db592bd41082349bc6b35be809ff2053a299 Mon Sep 17 00:00:00 2001 From: Heyi Guo Date: Mon, 23 Nov 2015 07:48:33 +0000 Subject: [PATCH] ArmPkg: Invalidate cache after allocating UC memory It is implied that the memory returned from UncachedMemoryAllocationLib should have cache invalidated. So we invalidate memory range after changing memory attribute to uncached. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Heyi Guo Reviewed-by: Ard Biesheuvel git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18920 6f19259b-4bc3-4df7-8a09-765794883524 --- .../UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.c | 3 +++ .../UncachedMemoryAllocationLib.inf | 1 + 2 files changed, 4 insertions(+) diff --git a/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.c b/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.c index b859f63c2b..1dfc7402fb 100644 --- a/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.c +++ b/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.c @@ -25,6 +25,7 @@ #include #include #include +#include VOID * UncachedInternalAllocatePages ( @@ -165,6 +166,8 @@ AllocatePagesFromList ( return Status; } + InvalidateDataCacheRange ((VOID *)(UINTN)Memory, EFI_PAGES_TO_SIZE (Pages)); + NewNode = AllocatePool (sizeof (FREE_PAGE_NODE)); if (NewNode == NULL) { ASSERT (FALSE); diff --git a/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.inf b/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.inf index 0a0b6cbcc8..d7a0f2f792 100644 --- a/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.inf +++ b/ArmPkg/Library/UncachedMemoryAllocationLib/UncachedMemoryAllocationLib.inf @@ -38,6 +38,7 @@ MemoryAllocationLib PcdLib DxeServicesTableLib + CacheMaintenanceLib [Pcd] gArmTokenSpaceGuid.PcdArmFreeUncachedMemorySizeThreshold -- 2.39.2