summaryrefslogtreecommitdiff
path: root/EdkNt32Pkg/Dxe
diff options
context:
space:
mode:
authordtang2 <dtang2@6f19259b-4bc3-4df7-8a09-765794883524>2006-11-08 03:12:19 +0000
committerdtang2 <dtang2@6f19259b-4bc3-4df7-8a09-765794883524>2006-11-08 03:12:19 +0000
commit9e0e49fc76ce84779b34cf11a4bced3911df0391 (patch)
treea5d3e5823496ec8a9b16f2acf28d0217d10e8c9a /EdkNt32Pkg/Dxe
parent99125b466d093f5a528642aa996da05ef9ec1acd (diff)
downloadedk2-platforms-9e0e49fc76ce84779b34cf11a4bced3911df0391.tar.xz
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
Diffstat (limited to 'EdkNt32Pkg/Dxe')
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMaint/BootMaint.c15
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMngr/BootManager.c24
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c14
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/FrontPage.c15
4 files changed, 62 insertions, 6 deletions
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMaint/BootMaint.c b/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMaint/BootMaint.c
index c4b3211dfd..6eefa0bd30 100644
--- a/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMaint/BootMaint.c
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMaint/BootMaint.c
@@ -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 ();
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMngr/BootManager.c b/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMngr/BootManager.c
index d90cfaa0a8..23b8789617 100644
--- a/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMngr/BootManager.c
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMngr/BootManager.c
@@ -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.
//
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c
index 0e73a4e3fe..3f648b7de6 100644
--- a/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c
@@ -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
//
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/FrontPage.c b/EdkNt32Pkg/Dxe/PlatformBds/Generic/FrontPage.c
index 69b2fb5078..45992db02d 100644
--- a/EdkNt32Pkg/Dxe/PlatformBds/Generic/FrontPage.c
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/FrontPage.c
@@ -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);
@@ -878,6 +886,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
// takes affect