summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c')
-rw-r--r--MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c
index cc2032cd82..1768781bfc 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);
}