Bug fix for "Tiano BIOS needs to implement an automatic reboot when BIOS settings are changed"
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1913 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1230,6 +1230,7 @@ Returns:
|
||||
UINTN Index;
|
||||
BM_MENU_ENTRY *NewMenuEntry;
|
||||
BM_FILE_CONTEXT *NewFileContext;
|
||||
BOOLEAN BootMaintMenuResetRequired;
|
||||
|
||||
Location = NULL;
|
||||
Index = 0;
|
||||
@@ -1247,6 +1248,7 @@ Returns:
|
||||
while (1) {
|
||||
UpdatePageId (CallbackData, FORM_MAIN_ID);
|
||||
|
||||
BootMaintMenuResetRequired = FALSE;
|
||||
Status = FormConfig->SendForm (
|
||||
FormConfig,
|
||||
TRUE,
|
||||
@@ -1256,9 +1258,13 @@ Returns:
|
||||
NULL,
|
||||
(UINT8 *) CallbackData->BmmFakeNvData,
|
||||
NULL,
|
||||
NULL
|
||||
&BootMaintMenuResetRequired
|
||||
);
|
||||
|
||||
if (BootMaintMenuResetRequired) {
|
||||
EnableResetRequired ();
|
||||
}
|
||||
|
||||
ReclaimStringDepository ();
|
||||
|
||||
//
|
||||
@@ -1267,6 +1273,7 @@ Returns:
|
||||
if (INACTIVE_STATE != CallbackData->FeCurrentState) {
|
||||
UpdateFileExplorer (CallbackData, 0);
|
||||
|
||||
BootMaintMenuResetRequired = FALSE;
|
||||
Status = FormConfig->SendForm (
|
||||
FormConfig,
|
||||
TRUE,
|
||||
@@ -1276,9 +1283,13 @@ Returns:
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
&BootMaintMenuResetRequired
|
||||
);
|
||||
|
||||
if (BootMaintMenuResetRequired) {
|
||||
EnableResetRequired ();
|
||||
}
|
||||
|
||||
CallbackData->FeCurrentState = INACTIVE_STATE;
|
||||
CallbackData->FeDisplayContext = UNKNOWN_CONTEXT;
|
||||
ReclaimStringDepository ();
|
||||
|
@@ -139,6 +139,7 @@ Returns:
|
||||
UINT8 *Location;
|
||||
EFI_GUID BmGuid;
|
||||
LIST_ENTRY BdsBootOptionList;
|
||||
BOOLEAN BootMngrMenuResetRequired;
|
||||
|
||||
gOption = NULL;
|
||||
InitializeListHead (&BdsBootOptionList);
|
||||
@@ -299,13 +300,34 @@ Returns:
|
||||
|
||||
ASSERT (gBrowser);
|
||||
|
||||
gBrowser->SendForm (gBrowser, TRUE, &gBootManagerHandle, 1, NULL, NULL, NULL, NULL, NULL);
|
||||
BootMngrMenuResetRequired = FALSE;
|
||||
gBrowser->SendForm (
|
||||
gBrowser,
|
||||
TRUE,
|
||||
&gBootManagerHandle,
|
||||
1,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&BootMngrMenuResetRequired
|
||||
);
|
||||
|
||||
if (BootMngrMenuResetRequired) {
|
||||
EnableResetRequired ();
|
||||
}
|
||||
|
||||
Hii->ResetStrings (Hii, gBootManagerHandle);
|
||||
|
||||
if (gOption == NULL) {
|
||||
return ;
|
||||
}
|
||||
|
||||
//
|
||||
//Will leave browser, check any reset required change is applied? if yes, reset system
|
||||
//
|
||||
SetupResetReminder ();
|
||||
|
||||
//
|
||||
// BugBug: This code looks repeated from the BDS. Need to save code space.
|
||||
//
|
||||
|
@@ -197,6 +197,7 @@ Returns:
|
||||
UINTN VideoOptionSize;
|
||||
EFI_HII_HANDLE *HiiHandles;
|
||||
UINT16 HandleBufferLength;
|
||||
BOOLEAN BootDeviceMngrMenuResetRequired;
|
||||
|
||||
IfrOptionList = NULL;
|
||||
VideoOption = NULL;
|
||||
@@ -435,6 +436,7 @@ Returns:
|
||||
gBS->FreePool (IfrOptionList);
|
||||
}
|
||||
|
||||
BootDeviceMngrMenuResetRequired = FALSE;
|
||||
Status = gBrowser->SendForm (
|
||||
gBrowser,
|
||||
TRUE, // Use the database
|
||||
@@ -444,9 +446,13 @@ Returns:
|
||||
FPCallbackInfo.CallbackHandle,
|
||||
(UINT8 *) &FPCallbackInfo.Data,
|
||||
NULL,
|
||||
NULL
|
||||
&BootDeviceMngrMenuResetRequired
|
||||
);
|
||||
|
||||
if (BootDeviceMngrMenuResetRequired) {
|
||||
EnableResetRequired ();
|
||||
}
|
||||
|
||||
Hii->ResetStrings (Hii, FPCallbackInfo.DevMgrHiiHandle);
|
||||
|
||||
//
|
||||
@@ -454,6 +460,7 @@ Returns:
|
||||
// a target to display
|
||||
//
|
||||
if (gCallbackKey != 0 && gCallbackKey < 0x2000) {
|
||||
BootDeviceMngrMenuResetRequired = FALSE;
|
||||
Status = gBrowser->SendForm (
|
||||
gBrowser,
|
||||
TRUE, // Use the database
|
||||
@@ -463,9 +470,12 @@ Returns:
|
||||
NULL, // This is the handle that the interface to the callback was installed on
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
&BootDeviceMngrMenuResetRequired
|
||||
);
|
||||
|
||||
if (BootDeviceMngrMenuResetRequired) {
|
||||
EnableResetRequired ();
|
||||
}
|
||||
//
|
||||
// Force return to Device Manager
|
||||
//
|
||||
|
@@ -417,6 +417,7 @@ Returns:
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT8 FakeNvRamMap[1];
|
||||
BOOLEAN FrontPageMenuResetRequired;
|
||||
|
||||
//
|
||||
// Begin waiting for USER INPUT
|
||||
@@ -427,6 +428,7 @@ Returns:
|
||||
);
|
||||
|
||||
FakeNvRamMap[0] = (UINT8) mLastSelection;
|
||||
FrontPageMenuResetRequired = FALSE;
|
||||
Status = gBrowser->SendForm (
|
||||
gBrowser,
|
||||
TRUE, // Use the database
|
||||
@@ -436,8 +438,14 @@ Returns:
|
||||
FrontPageCallbackHandle, // This is the handle that the interface to the callback was installed on
|
||||
FakeNvRamMap,
|
||||
NULL,
|
||||
NULL
|
||||
&FrontPageMenuResetRequired
|
||||
);
|
||||
//
|
||||
// Check whether user change any option setting which needs a reset to be effective
|
||||
//
|
||||
if (FrontPageMenuResetRequired) {
|
||||
EnableResetRequired ();
|
||||
}
|
||||
|
||||
Hii->ResetStrings (Hii, gFrontPageHandle);
|
||||
|
||||
@@ -877,6 +885,11 @@ Returns:
|
||||
|
||||
} while ((Status == EFI_SUCCESS) && (gCallbackKey != 1));
|
||||
|
||||
//
|
||||
//Will leave browser, check any reset required change is applied? if yes, reset system
|
||||
//
|
||||
SetupResetReminder ();
|
||||
|
||||
//
|
||||
// Automatically load current entry
|
||||
// Note: The following lines of code only execute when Auto boot
|
||||
|
Reference in New Issue
Block a user