REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2008 DxeIpl is responsible to create page table for DXE phase running either in long mode or in 32bit mode with certain protection mechanism enabled (refer to ToBuildPageTable()). The patch updates DxeIpl to create 5-level page table for DXE phase running in long mode when PcdUse5LevelPageTable is TRUE and CPU supports 5-level page table. Signed-off-by: Ray Ni <ray.ni@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com> Signed-off-by: Eric Dong <eric.dong@intel.com>
140 lines
4.5 KiB
INI
140 lines
4.5 KiB
INI
## @file
|
|
# Last PEIM executed in PEI phase to load DXE Core from a Firmware Volume.
|
|
#
|
|
# This module produces a special PPI named the DXE Initial Program Load (IPL)
|
|
# PPI to discover and dispatch the DXE Foundation and components that are
|
|
# needed to run the DXE Foundation.
|
|
#
|
|
# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
|
|
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
##
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010005
|
|
BASE_NAME = DxeIpl
|
|
MODULE_UNI_FILE = DxeIpl.uni
|
|
FILE_GUID = 86D70125-BAA3-4296-A62F-602BEBBB9081
|
|
MODULE_TYPE = PEIM
|
|
VERSION_STRING = 1.0
|
|
|
|
ENTRY_POINT = PeimInitializeDxeIpl
|
|
|
|
#
|
|
# The following information is for reference only and not required by the build tools.
|
|
#
|
|
# VALID_ARCHITECTURES = IA32 X64 EBC (EBC is for build only) AARCH64
|
|
#
|
|
|
|
[Sources]
|
|
DxeIpl.h
|
|
DxeLoad.c
|
|
|
|
[Sources.Ia32]
|
|
X64/VirtualMemory.h
|
|
X64/VirtualMemory.c
|
|
Ia32/DxeLoadFunc.c
|
|
Ia32/IdtVectorAsm.nasm
|
|
|
|
[Sources.X64]
|
|
X64/VirtualMemory.h
|
|
X64/VirtualMemory.c
|
|
X64/DxeLoadFunc.c
|
|
|
|
[Sources.EBC]
|
|
Ebc/DxeLoadFunc.c
|
|
|
|
[Sources.ARM, Sources.AARCH64]
|
|
Arm/DxeLoadFunc.c
|
|
|
|
[Packages]
|
|
MdePkg/MdePkg.dec
|
|
MdeModulePkg/MdeModulePkg.dec
|
|
|
|
[Packages.ARM, Packages.AARCH64]
|
|
ArmPkg/ArmPkg.dec
|
|
|
|
[LibraryClasses]
|
|
PcdLib
|
|
MemoryAllocationLib
|
|
BaseMemoryLib
|
|
ExtractGuidedSectionLib
|
|
UefiDecompressLib
|
|
ReportStatusCodeLib
|
|
PeiServicesLib
|
|
HobLib
|
|
BaseLib
|
|
PeimEntryPoint
|
|
DebugLib
|
|
DebugAgentLib
|
|
PeiServicesTablePointerLib
|
|
PerformanceLib
|
|
|
|
[LibraryClasses.ARM, LibraryClasses.AARCH64]
|
|
ArmMmuLib
|
|
|
|
[Ppis]
|
|
gEfiDxeIplPpiGuid ## PRODUCES
|
|
gEfiPeiDecompressPpiGuid ## PRODUCES
|
|
gEfiEndOfPeiSignalPpiGuid ## SOMETIMES_PRODUCES # Not produced on S3 boot path
|
|
gEfiPeiReadOnlyVariable2PpiGuid ## SOMETIMES_CONSUMES
|
|
gEfiPeiLoadFilePpiGuid ## SOMETIMES_CONSUMES
|
|
gEfiPeiS3Resume2PpiGuid ## SOMETIMES_CONSUMES # Consumed on S3 boot path
|
|
gEfiPeiRecoveryModulePpiGuid ## SOMETIMES_CONSUMES # Consumed on recovery boot path
|
|
## SOMETIMES_CONSUMES
|
|
## UNDEFINED # HOB
|
|
gEfiVectorHandoffInfoPpiGuid
|
|
gEfiPeiMemoryDiscoveredPpiGuid ## SOMETIMES_CONSUMES
|
|
gEdkiiPeiBootInCapsuleOnDiskModePpiGuid ## SOMETIMES_CONSUMES
|
|
gEdkiiPeiCapsuleOnDiskPpiGuid ## SOMETIMES_CONSUMES # Consumed on firmware update boot path
|
|
|
|
[Guids]
|
|
## SOMETIMES_CONSUMES ## Variable:L"MemoryTypeInformation"
|
|
## SOMETIMES_PRODUCES ## HOB
|
|
gEfiMemoryTypeInformationGuid
|
|
|
|
[FeaturePcd.IA32]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES
|
|
|
|
[FeaturePcd.X64]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables ## CONSUMES
|
|
|
|
[FeaturePcd]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress ## CONSUMES
|
|
|
|
[Pcd.IA32,Pcd.X64]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ## SOMETIMES_CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ## CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask ## CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask ## CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard ## CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdUse5LevelPageTable ## SOMETIMES_CONSUMES
|
|
|
|
[Pcd.IA32,Pcd.X64,Pcd.ARM,Pcd.AARCH64]
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack ## SOMETIMES_CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy ## SOMETIMES_CONSUMES
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy ## SOMETIMES_CONSUMES
|
|
|
|
[Depex]
|
|
gEfiPeiLoadFilePpiGuid AND gEfiPeiMasterBootModePpiGuid
|
|
|
|
#
|
|
# [BootMode]
|
|
# S3_RESUME ## SOMETIMES_CONSUMES
|
|
# RECOVERY_FULL ## SOMETIMES_CONSUMES
|
|
#
|
|
#
|
|
# [Hob]
|
|
# MEMORY_ALLOCATION ## SOMETIMES_PRODUCES # MEMORY_ALLOCATION_MODULE for DxeCore
|
|
# MEMORY_ALLOCATION ## SOMETIMES_PRODUCES # New Stack HoB
|
|
# MEMORY_ALLOCATION ## SOMETIMES_PRODUCES # Old Stack HOB
|
|
#
|
|
# [Hob.IPF]
|
|
# MEMORY_ALLOCATION ## SOMETIMES_PRODUCES # MEMORY_ALLOCATION_BSP_STORE
|
|
#
|
|
|
|
[UserExtensions.TianoCore."ExtraFiles"]
|
|
DxeIplExtra.uni
|