ArmPkg/ArmMmuLib: remove bogus alignment of page allocations

In commit 7d189f99d8 ("ArmPkg/Mmu: Fix bug of aligning new allocated
page table"), we fixed a flaw in the logic regarding alignment of newly
allocated translation table pages. However, we all failed to spot that
aligning page based allocations to page size is rather pointless to
begin with, so simply allocate a single page each time we add new pages
to the translation tables.

Also, drop the unnecessary cast.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
Ard Biesheuvel 2016-09-09 11:19:18 +01:00
parent e93cb72e59
commit 674e127ef6
1 changed files with 4 additions and 6 deletions

View File

@ -298,7 +298,7 @@ GetBlockEntryListFromAddress (
}
// Create a new translation table
TranslationTable = (UINT64*)AllocateAlignedPages (EFI_SIZE_TO_PAGES(TT_ENTRY_COUNT * sizeof(UINT64)), TT_ALIGNMENT_DESCRIPTION_TABLE);
TranslationTable = AllocatePages (1);
if (TranslationTable == NULL) {
return NULL;
}
@ -321,7 +321,7 @@ GetBlockEntryListFromAddress (
//
// Create a new translation table
TranslationTable = (UINT64*)AllocateAlignedPages (EFI_SIZE_TO_PAGES(TT_ENTRY_COUNT * sizeof(UINT64)), TT_ALIGNMENT_DESCRIPTION_TABLE);
TranslationTable = AllocatePages (1);
if (TranslationTable == NULL) {
return NULL;
}
@ -553,7 +553,6 @@ ArmConfigureMmu (
)
{
VOID* TranslationTable;
UINTN TranslationTablePageCount;
UINT32 TranslationTableAttribute;
ARM_MEMORY_REGION_DESCRIPTOR *MemoryTableEntry;
UINT64 MaxAddress;
@ -640,8 +639,7 @@ ArmConfigureMmu (
ArmSetTCR (TCR);
// Allocate pages for translation table
TranslationTablePageCount = EFI_SIZE_TO_PAGES(RootTableEntryCount * sizeof(UINT64));
TranslationTable = (UINT64*)AllocateAlignedPages (TranslationTablePageCount, TT_ALIGNMENT_DESCRIPTION_TABLE);
TranslationTable = AllocatePages (1);
if (TranslationTable == NULL) {
return RETURN_OUT_OF_RESOURCES;
}
@ -718,7 +716,7 @@ ArmConfigureMmu (
return RETURN_SUCCESS;
FREE_TRANSLATION_TABLE:
FreePages (TranslationTable, TranslationTablePageCount);
FreePages (TranslationTable, 1);
return Status;
}