mirror of https://github.com/acidanthera/audk.git
ArmPkg: Fix UncachedFreeAlignedPages in UncachedMemoryAllocationLib
Route both the setting and restoring of cacheability through DXE Services/GCD and stop using the CPU AP directly. The patch also removes all references to the CPU AP which eliminates the need for a library constructor. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eugene Cohen <eugene@hp.com> Reviewed-by: Senthil Ramakrishnan <senthil.ramakrishnan@hp.com> Reviewed-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14468 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
b95a25d1ca
commit
a7463b3040
|
@ -1,5 +1,5 @@
|
||||||
/** @file
|
/** @file
|
||||||
UncachedMemoryAllocation lib that uses DXE CPU driver to chnage cachability for
|
UncachedMemoryAllocation lib that uses DXE Service to change cachability for
|
||||||
a buffer.
|
a buffer.
|
||||||
|
|
||||||
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||||
|
@ -42,8 +42,6 @@ UncachedInternalAllocateAlignedPages (
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EFI_CPU_ARCH_PROTOCOL *gDebugUncachedCpu;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Assume all of memory has the same cache attributes, unless we do our magic
|
// Assume all of memory has the same cache attributes, unless we do our magic
|
||||||
//
|
//
|
||||||
|
@ -265,7 +263,7 @@ UncachedFreeAlignedPages (
|
||||||
ASSERT (Pages != 0);
|
ASSERT (Pages != 0);
|
||||||
|
|
||||||
Memory = (EFI_PHYSICAL_ADDRESS) (UINTN) Buffer;
|
Memory = (EFI_PHYSICAL_ADDRESS) (UINTN) Buffer;
|
||||||
Status = gDebugUncachedCpu->SetMemoryAttributes (gDebugUncachedCpu, Memory, EFI_PAGES_TO_SIZE (Pages), gAttributes);
|
Status = gDS->SetMemorySpaceAttributes (Memory, EFI_PAGES_TO_SIZE (Pages), gAttributes);
|
||||||
|
|
||||||
Status = gBS->FreePages (Memory, Pages);
|
Status = gBS->FreePages (Memory, Pages);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
@ -592,35 +590,3 @@ UncachedSafeFreePool (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
The constructor function caches the pointer of DXE Services Table.
|
|
||||||
|
|
||||||
The constructor function caches the pointer of DXE Services Table.
|
|
||||||
It will ASSERT() if that operation fails.
|
|
||||||
It will ASSERT() if the pointer of DXE Services Table is NULL.
|
|
||||||
It will always return EFI_SUCCESS.
|
|
||||||
|
|
||||||
@param ImageHandle The firmware allocated handle for the EFI image.
|
|
||||||
@param SystemTable A pointer to the EFI System Table.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
UncachedMemoryAllocationLibConstructor (
|
|
||||||
IN EFI_HANDLE ImageHandle,
|
|
||||||
IN EFI_SYSTEM_TABLE *SystemTable
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_STATUS Status;
|
|
||||||
|
|
||||||
Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **)&gDebugUncachedCpu);
|
|
||||||
ASSERT_EFI_ERROR(Status);
|
|
||||||
|
|
||||||
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#/** @file
|
#/** @file
|
||||||
# Semihosting serail port lib
|
#
|
||||||
|
# UncachedMemoryAllocation lib that uses DXE Service to change cachability for
|
||||||
|
# a buffer.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
|
@ -20,7 +22,6 @@
|
||||||
MODULE_TYPE = DXE_DRIVER
|
MODULE_TYPE = DXE_DRIVER
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
LIBRARY_CLASS = UncachedMemoryAllocationLib
|
LIBRARY_CLASS = UncachedMemoryAllocationLib
|
||||||
CONSTRUCTOR = UncachedMemoryAllocationLibConstructor
|
|
||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
UncachedMemoryAllocationLib.c
|
UncachedMemoryAllocationLib.c
|
||||||
|
@ -29,14 +30,9 @@
|
||||||
ArmPkg/ArmPkg.dec
|
ArmPkg/ArmPkg.dec
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
|
||||||
[Protocols]
|
|
||||||
gEfiCpuArchProtocolGuid
|
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
BaseLib
|
BaseLib
|
||||||
ArmLib
|
ArmLib
|
||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
DxeServicesTableLib
|
DxeServicesTableLib
|
||||||
|
|
||||||
[Depex]
|
|
||||||
gEfiCpuArchProtocolGuid
|
|
Loading…
Reference in New Issue