summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorRuiyu Ni <ruiyu.ni@intel.com>2016-07-05 17:46:07 +0800
committerRuiyu Ni <ruiyu.ni@intel.com>2016-07-07 09:57:31 +0800
commit3a986a353db249e3ae128d47bff3a13c6e13a037 (patch)
tree4c11d26e0043bff0acc971ff6f6d031998ca319f /MdeModulePkg
parenteab4016490c863895c8773033dfe651b9dc90816 (diff)
downloadedk2-3a986a353db249e3ae128d47bff3a13c6e13a037.tar.gz
edk2-3a986a353db249e3ae128d47bff3a13c6e13a037.tar.bz2
edk2-3a986a353db249e3ae128d47bff3a13c6e13a037.zip
MdeModulePkg/Bds: MemoryTypeInformation excludes boot option mem use
The patch re-orders the sequences by putting updating memory type information before loading the boot option so that the reserved memory usage by HTTP RAM disk boot can be excluded by the memory type information updating. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Sunny Wang <sunnywang@hpe.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c41
-rw-r--r--MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c13
-rw-r--r--MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h5
3 files changed, 19 insertions, 40 deletions
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
index 4da401d23c..bb38f0055a 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
@@ -1569,7 +1569,6 @@ EfiBootManagerBoot (
UINTN FileSize;
EFI_BOOT_LOGO_PROTOCOL *BootLogo;
EFI_EVENT LegacyBootEvent;
- UINTN RamDiskSizeInPages;
if (BootOption == NULL) {
return;
@@ -1643,8 +1642,24 @@ EfiBootManagerBoot (
PERF_START_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32) OptionNumber);
//
- // 5. Load EFI boot option to ImageHandle
+ // 5. Adjust the different type memory page number just before booting
+ // and save the updated info into the variable for next boot to use
+ //
+ BmSetMemoryTypeInformationVariable (
+ (BOOLEAN) ((BootOption->Attributes & LOAD_OPTION_CATEGORY) == LOAD_OPTION_CATEGORY_BOOT)
+ );
+
//
+ // 6. Load EFI boot option to ImageHandle
+ //
+ DEBUG_CODE_BEGIN ();
+ if (BootOption->Description == NULL) {
+ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "[Bds]Booting from unknown device path\n"));
+ } else {
+ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "[Bds]Booting %s\n", BootOption->Description));
+ }
+ DEBUG_CODE_END ();
+
ImageHandle = NULL;
RamDiskDevicePath = NULL;
if (DevicePathType (BootOption->FilePath) != BBS_DEVICE_PATH) {
@@ -1701,28 +1716,6 @@ EfiBootManagerBoot (
}
//
- // 6. Adjust the different type memory page number just before booting
- // and save the updated info into the variable for next boot to use
- //
- if (RamDiskDevicePath == NULL) {
- RamDiskSizeInPages = 0;
- } else {
- BmGetRamDiskMemoryInfo (RamDiskDevicePath, &RamDiskSizeInPages);
- }
- BmSetMemoryTypeInformationVariable (
- (BOOLEAN) ((BootOption->Attributes & LOAD_OPTION_CATEGORY) == LOAD_OPTION_CATEGORY_BOOT),
- RamDiskSizeInPages
- );
-
- DEBUG_CODE_BEGIN();
- if (BootOption->Description == NULL) {
- DEBUG ((DEBUG_INFO | DEBUG_LOAD, "[Bds]Booting from unknown device path\n"));
- } else {
- DEBUG ((DEBUG_INFO | DEBUG_LOAD, "[Bds]Booting %s\n", BootOption->Description));
- }
- DEBUG_CODE_END();
-
- //
// Check to see if we should legacy BOOT. If yes then do the legacy boot
// Write boot to OS performance data for Legacy boot
//
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c
index 93502fe7d2..2a60f0643e 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c
@@ -130,13 +130,10 @@ BmMatchDevicePaths (
@param Boot TRUE if current boot option belongs to boot
category instead of application category.
- @param RamDiskSizeInPages Reserved memory size in pages occupied by
- RAM Disk.
**/
VOID
BmSetMemoryTypeInformationVariable (
- IN BOOLEAN Boot,
- IN UINTN RamDiskSizeInPages
+ IN BOOLEAN Boot
)
{
EFI_STATUS Status;
@@ -230,14 +227,6 @@ BmSetMemoryTypeInformationVariable (
}
//
- // Do not count the reserved memory occupied by RAM Disk.
- //
- if ((CurrentMemoryTypeInformation[Index1].Type == EfiReservedMemoryType) &&
- (CurrentMemoryTypeInformation[Index1].NumberOfPages > ((UINT32) RamDiskSizeInPages))) {
- CurrentMemoryTypeInformation[Index1].NumberOfPages -= (UINT32) RamDiskSizeInPages;
- }
-
- //
// Previous is the number of pages pre-allocated
// Current is the number of pages actually needed
//
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
index e1c5a96947..07ee45bbfa 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
+++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
@@ -207,13 +207,10 @@ BmWriteBootToOsPerformanceData (
@param Boot TRUE if current boot option belongs to boot
category instead of application category.
- @param RamDiskSizeInPages Reserved memory size in pages occupied by
- RAM Disk.
**/
VOID
BmSetMemoryTypeInformationVariable (
- IN BOOLEAN Boot,
- IN UINTN RamDiskSizeInPages
+ IN BOOLEAN Boot
);
/**