summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorStar Zeng <star.zeng@intel.com>2015-08-04 01:41:48 +0000
committerlzeng14 <lzeng14@Edk2>2015-08-04 01:41:48 +0000
commitc5d5379937629f3061d08b8d9a3386a40152ca2c (patch)
treea1623251e21f6228573ddb72810fc4ea0a2632bb /MdeModulePkg
parenta3bc432af63cf24991b4df27f06b832aa19de07b (diff)
downloadedk2-c5d5379937629f3061d08b8d9a3386a40152ca2c.tar.gz
edk2-c5d5379937629f3061d08b8d9a3386a40152ca2c.tar.bz2
edk2-c5d5379937629f3061d08b8d9a3386a40152ca2c.zip
MdeModulePkg DxeCore: Move ProcessLibraryConstructorList()
to right after CoreInitializeGcdServices(). Why? Some platforms maybe report both below 4G and above 4G memory resource hob as tested, then CoreInitializeMemoryServices() will find and add the tested above 4G memory resource hob to memory descriptor for early memory allocation services, then if ProcessLibraryConstructorList() that has library constructor tries to allocate below 4G memory and will fail. In fact, the following CoreInitializeGcdServices() will add all the memory resource hob to GCD map, and add the tested below 4G memory resource hob to memory descriptor, but it has been too late for ProcessLibraryConstructorList(). Also move below two lines as they are needed to be after the constructor of DxeCorePerfomanceLib. PERF_END (NULL,"PEI", NULL, 0) ; PERF_START (NULL,"DXE", NULL, 0) ; Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18146 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c b/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
index e6ed2476a4..e60d2f2dcc 100644
--- a/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
+++ b/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
@@ -290,13 +290,6 @@ DxeMain (
ASSERT_EFI_ERROR (Status);
//
- // Call constructor for all libraries
- //
- ProcessLibraryConstructorList (gDxeCoreImageHandle, gDxeCoreST);
- PERF_END (NULL,"PEI", NULL, 0) ;
- PERF_START (NULL,"DXE", NULL, 0) ;
-
- //
// Report DXE Core image information to the PE/COFF Extra Action Library
//
ZeroMem (&ImageContext, sizeof (ImageContext));
@@ -311,6 +304,13 @@ DxeMain (
ASSERT_EFI_ERROR (Status);
//
+ // Call constructor for all libraries
+ //
+ ProcessLibraryConstructorList (gDxeCoreImageHandle, gDxeCoreST);
+ PERF_END (NULL,"PEI", NULL, 0) ;
+ PERF_START (NULL,"DXE", NULL, 0) ;
+
+ //
// Install the DXE Services Table into the EFI System Tables's Configuration Table
//
Status = CoreInstallConfigurationTable (&gEfiDxeServicesTableGuid, gDxeCoreDS);