Revision: 18146
http://sourceforge.net/p/edk2/code/18146
Author: lzeng14
Date: 2015-08-04 01:41:48 +0000 (Tue, 04 Aug 2015)
Log Message:
-----------
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 <[email protected]>
Reviewed-by: Liming Gao <[email protected]>
Modified Paths:
--------------
trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
Modified: trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
===================================================================
--- trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c 2015-08-04 01:37:12 UTC
(rev 18145)
+++ trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c 2015-08-04 01:41:48 UTC
(rev 18146)
@@ -290,13 +290,6 @@
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 @@
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);
------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits