Currently 1G Page table is restricted 512GB. this patch can help to increase the page table size based on the input. default will be 512GB build option PAGE_TABLE_1G_SIZE is used to increase the page table size
Cc: Rahul Kumar <[email protected]> Cc: Ray Ni <[email protected]> Cc: Catharine West <[email protected]> Cc: V Sangeetha <[email protected]> Signed-off-by: Ashraf Ali S <[email protected]> --- UefiCpuPkg/ResetVector/Vtf0/ReadMe.txt | 4 ++-- UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf | 2 ++ UefiCpuPkg/ResetVector/Vtf0/X64/PageTables.asm | 13 +++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/UefiCpuPkg/ResetVector/Vtf0/ReadMe.txt b/UefiCpuPkg/ResetVector/Vtf0/ReadMe.txt index 4fcb15c3b1..4d153fc1a7 100644 --- a/UefiCpuPkg/ResetVector/Vtf0/ReadMe.txt +++ b/UefiCpuPkg/ResetVector/Vtf0/ReadMe.txt @@ -1,10 +1,10 @@ === HOW TO USE VTF0 === Add this line to your DSC [Components.IA32] or [Components.X64] section: - UefiCpuPkg/ResetVector/Vtf0/ResetVector.inf + UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf Add this line to your FDF FV section: - INF RuleOverride=RESET_VECTOR UefiCpuPkg/ResetVector/Vtf0/ResetVector.inf + INF RuleOverride=RESET_VECTOR UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf In your FDF FFS file rules sections add: [Rule.Common.SEC.RESET_VECTOR] diff --git a/UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf b/UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf index 6b406163db..96106a4b11 100644 --- a/UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf +++ b/UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf @@ -53,5 +53,7 @@ # -DARCH_X64, -DARCH_IA32 # * for using 1G page table: # -DPAGE_TABLE_1G +# * for incresing the 1G page table size (Size in GBs): +# -DPAGE_TABLE_1G_SIZE=1024 # * for different debug channels: # -DDEBUG_SERIAL, -DDEBUG_PORT80, or not specify any debug channel diff --git a/UefiCpuPkg/ResetVector/Vtf0/X64/PageTables.asm b/UefiCpuPkg/ResetVector/Vtf0/X64/PageTables.asm index 7960b141be..b080dc5296 100644 --- a/UefiCpuPkg/ResetVector/Vtf0/X64/PageTables.asm +++ b/UefiCpuPkg/ResetVector/Vtf0/X64/PageTables.asm @@ -1,7 +1,7 @@ ;------------------------------------------------------------------------------ ; @file ; Emits Page Tables for 1:1 mapping. -; If using 1G page table, map addresses 0 - 0x8000000000 (512GB), +; If using 1G page table, map addresses 0 - 0x8000000000 (512GB, Size can be increse via PAGE_TABLE_1G_SIZE), ; else, map addresses 0 - 0x100000000 (4GB) ; ; Copyright (c) 2021 - 2023, Intel Corporation. All rights reserved.<BR> @@ -39,6 +39,15 @@ BITS 64 %define PAGE_PDPTE_1GB(x) ((x << 30) + PAGE_BLE_ATTR) %define PAGE_PDE_2MB(x) ((x << 21) + PAGE_BLE_ATTR) +%ifdef PAGE_TABLE_1G_SIZE + %define PAGE_PDPTE_1GB_SIZE PAGE_TABLE_1G_SIZE +%else + ; + ; Default 512GB of 1G Page Table + ; + %define PAGE_PDPTE_1GB_SIZE 512 +%endif + ALIGN 16 %ifdef PAGE_TABLE_1G @@ -47,7 +56,7 @@ Pdp: ; Page-directory pointer table (512 * 1GB entries => 512GB) ; %assign i 0 - %rep 512 + %rep PAGE_PDPTE_1GB_SIZE DQ PAGE_PDPTE_1GB(i) %assign i i+1 %endrep -- 2.39.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111910): https://edk2.groups.io/g/devel/message/111910 Mute This Topic: https://groups.io/mt/102898657/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
