mirror of https://github.com/acidanthera/audk.git
ArmPkg/ArmMmuLib: take the CPU supported maximum PA space into account
In preparation of dropping PcdPrePiCpuMemorySize entirely, base the maximum size of the identity map on the capabilities of the CPU. Since that may exceed what is architecturally permitted when using 4 KB pages, take MAX_ADDRESS into account as well. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
parent
2f9b248af8
commit
e36b243c71
|
@ -604,8 +604,15 @@ ArmConfigureMmu (
|
|||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// Cover the entire GCD memory space
|
||||
MaxAddress = (1UL << PcdGet8 (PcdPrePiCpuMemorySize)) - 1;
|
||||
//
|
||||
// Limit the virtual address space to what we can actually use: UEFI
|
||||
// mandates a 1:1 mapping, so no point in making the virtual address
|
||||
// space larger than the physical address space. We also have to take
|
||||
// into account the architectural limitations that result from UEFI's
|
||||
// use of 4 KB pages.
|
||||
//
|
||||
MaxAddress = MIN (LShiftU64 (1ULL, ArmGetPhysicalAddressBits ()) - 1,
|
||||
MAX_ADDRESS);
|
||||
|
||||
// Lookup the Table Level to get the information
|
||||
LookupAddresstoRootTable (MaxAddress, &T0SZ, &RootTableEntryCount);
|
||||
|
|
|
@ -40,8 +40,5 @@
|
|||
CacheMaintenanceLib
|
||||
MemoryAllocationLib
|
||||
|
||||
[Pcd.AARCH64]
|
||||
gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize
|
||||
|
||||
[Pcd.ARM]
|
||||
gArmTokenSpaceGuid.PcdNormalMemoryNonshareableOverride
|
||||
|
|
|
@ -35,6 +35,3 @@
|
|||
ArmLib
|
||||
CacheMaintenanceLib
|
||||
MemoryAllocationLib
|
||||
|
||||
[Pcd.AARCH64]
|
||||
gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize
|
||||
|
|
Loading…
Reference in New Issue