Skip to content

Commit

Permalink
MdeModulePkg/Bds: MemoryTypeInformation excludes boot option mem use
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
niruiyu committed Jul 7, 2016
1 parent eab4016 commit 3a986a3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 40 deletions.
41 changes: 17 additions & 24 deletions MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
Original file line number Diff line number Diff line change
Expand Up @@ -1569,7 +1569,6 @@ EfiBootManagerBoot (
UINTN FileSize;
EFI_BOOT_LOGO_PROTOCOL *BootLogo;
EFI_EVENT LegacyBootEvent;
UINTN RamDiskSizeInPages;

if (BootOption == NULL) {
return;
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -1700,28 +1715,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
Expand Down
13 changes: 1 addition & 12 deletions MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -229,14 +226,6 @@ BmSetMemoryTypeInformationVariable (
continue;
}

//
// 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
Expand Down
5 changes: 1 addition & 4 deletions MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
);

/**
Expand Down

0 comments on commit 3a986a3

Please sign in to comment.