MdeModulePkg/UefiBootManagerLib: Always create MemoryTypeInfo variable

Align to old BDS behavior (IntelFrameworkModulePkg/BDS) to always create
MemoryTypeInfo variable regardless of the PcdResetOnMemoryTypeInformationChange
value.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18926 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ruiyu Ni 2015-11-24 06:56:05 +00:00 committed by niruiyu
parent 63a9e0d6f9
commit 665b26ba33
3 changed files with 20 additions and 12 deletions

View File

@ -1765,11 +1765,9 @@ 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 ((BootOption->Attributes & LOAD_OPTION_CATEGORY) == LOAD_OPTION_CATEGORY_BOOT) {
if (PcdGetBool (PcdResetOnMemoryTypeInformationChange)) {
BmSetMemoryTypeInformationVariable ();
}
}
BmSetMemoryTypeInformationVariable (
(BOOLEAN) ((BootOption->Attributes & LOAD_OPTION_CATEGORY) == LOAD_OPTION_CATEGORY_BOOT)
);
DEBUG_CODE_BEGIN();
if (BootOption->Description == NULL) {

View File

@ -122,11 +122,16 @@ BmMatchDevicePaths (
/**
This routine adjust the memory information for different memory type and
save them into the variables for next boot.
save them into the variables for next boot. It resets the system when
memory information is updated and the current boot option belongs to
boot category instead of application category.
@param Boot TRUE if current boot option belongs to boot category instead of
application category.
**/
VOID
BmSetMemoryTypeInformationVariable (
VOID
IN BOOLEAN Boot
)
{
EFI_STATUS Status;
@ -267,11 +272,11 @@ BmSetMemoryTypeInformationVariable (
if (!EFI_ERROR (Status)) {
//
// If the Memory Type Information settings have been modified, then reset the platform
// so the new Memory Type Information setting will be used to guarantee that an S4
// If the Memory Type Information settings have been modified and the boot option belongs to boot category,
// then reset the platform so the new Memory Type Information setting will be used to guarantee that an S4
// entry/resume cycle will not fail.
//
if (MemoryTypeInformationModified) {
if (MemoryTypeInformationModified && Boot && PcdGetBool (PcdResetOnMemoryTypeInformationChange)) {
DEBUG ((EFI_D_INFO, "Memory Type Information settings change. Warm Reset!!!\n"));
gRT->ResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL);
}

View File

@ -245,11 +245,16 @@ BmGetImageHeader (
/**
This routine adjust the memory information for different memory type and
save them into the variables for next boot.
save them into the variables for next boot. It resets the system when
memory information is updated and the current boot option belongs to
boot category instead of application category.
@param Boot TRUE if current boot option belongs to boot category instead of
application category.
**/
VOID
BmSetMemoryTypeInformationVariable (
VOID
IN BOOLEAN Boot
);
/**