SysCall: Simplified MakeUserPageTableTemplate().

This commit is contained in:
Mikhail Krichanov 2024-12-05 16:12:31 +03:00
parent 85070fbba0
commit 79e0eca155
3 changed files with 4 additions and 10 deletions
MdeModulePkg/Core/Dxe/SysCall
OvmfPkg/Include/IndustryStandard

@ -42,7 +42,7 @@ MakeUserPageTableTemplate (
NumberOfPdpEntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30));
TotalPagesNum = NumberOfPdpEntriesNeeded + 1;
PageAddress = (UINTN)AllocateAlignedPages (TotalPagesNum, PAGE_TABLE_POOL_ALIGNMENT);
PageAddress = (UINTN)AllocatePages (TotalPagesNum);
ASSERT (PageAddress != 0);
PageMap = (VOID *)PageAddress;
@ -84,9 +84,7 @@ MakeUserPageTableTemplate (
}
*UserPageTableTemplate = (VOID *)PageMap;
*UserPageTableTemplateSize = ALIGN_VALUE (EFI_PAGES_TO_SIZE (TotalPagesNum), PAGE_TABLE_POOL_ALIGNMENT);
SetUefiImageMemoryAttributes ((UINT64)(UINTN)PageMap, *UserPageTableTemplateSize, EFI_MEMORY_XP);
*UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
}
VOID

@ -155,7 +155,7 @@ MakeUserPageTableTemplate (
TotalPagesNum--;
}
BigPageAddress = (UINTN)AllocateAlignedPages (TotalPagesNum, PAGE_TABLE_POOL_ALIGNMENT);
BigPageAddress = (UINTN)AllocatePages (TotalPagesNum);
if (BigPageAddress == 0) {
DEBUG ((DEBUG_ERROR, "Core: Could not allocate buffer for User page table.\n"));
CpuDeadLoop ();
@ -281,9 +281,7 @@ MakeUserPageTableTemplate (
}
*UserPageTableTemplate = (VOID *)PageMap;
*UserPageTableTemplateSize = ALIGN_VALUE (EFI_PAGES_TO_SIZE (TotalPagesNum), PAGE_TABLE_POOL_ALIGNMENT);
SetUefiImageMemoryAttributes ((UINT64)PageMap, *UserPageTableTemplateSize, EFI_MEMORY_XP);
*UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
}
VOID

@ -158,6 +158,4 @@ typedef union {
#define PTE_OFFSET(x) ( (x >> 12) & PAGETABLE_ENTRY_MASK)
#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull
#define PAGE_TABLE_POOL_ALIGNMENT BASE_2MB
#endif