From 1acb4a137e46d4ce8013d7712ca25f2f13294fc3 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Wed, 25 Nov 2015 06:42:16 +0000 Subject: MdeModulePkg/UefiBootManagerLib: Always create MemoryTypeInfo variable Align to old BDS behavior (IntelFrameworkModulePkg/BDS) to always create MemoryTypeInfo variable regardless of the PcdResetOnMemoryTypeInformationChange value. (Sync patch r18926 from main trunk.) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Reviewed-by: Michael Kinney git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2015@18939 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 8 +++----- MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c | 15 ++++++++++----- MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h | 9 +++++++-- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index 8f14cf6d3f..4afd9c25ff 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1689,11 +1689,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) { diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c index 97d1a48cd5..e675904857 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c @@ -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); } diff --git a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h index d415442e23..c808ed2ffe 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h +++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h @@ -232,11 +232,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 ); /** -- cgit v1.2.3