diff mbox

[edk2,v2,8/9] OvmfPkg: BDS: drop custom boot timeout, revert to IntelFrameworkModulePkg's

Message ID 1414064030-11029-9-git-send-email-lersek@redhat.com
State New
Headers show

Commit Message

Laszlo Ersek Oct. 23, 2014, 11:33 a.m. UTC
PlatformBdsEnterFrontPage() already implements a keypress wait (for
entering the setup utility at boot) with a nice progress bar, only OVMF
has not been using it.

Removing our custom code and utilizing PlatformBdsEnterFrontPage()'s
builtin wait has the following benefits:

- It simplifies OVMF's BDS code.

- Because now we call PlatformBdsEnterFrontPage() unconditionally, it
  actually has a chance to look at the EFI_OS_INDICATIONS_BOOT_TO_FW_UI
  bit of the "OsIndications" variable, improving compliance with the UEFI
  specification. References:
  - https://bugzilla.redhat.com/show_bug.cgi?id=1153927
  - http://thread.gmane.org/gmane.comp.bios.tianocore.devel/10487

- The progress bar looks nice. (And it keeps the earlier behavior intact,
  when the user presses a key on the TianoCore splash screen.)

  In any case, we set the timeout to 0 (which doesn't show the progress
  bar and proceeds to the boot options immediately) in order to keep the
  boot time down.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---

Notes:
    v2:
    - changed PcdPlatformBootTimeOut from 3 to 0 [Jordan]
    - updated commit message accordingly

 OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c | 38 ++--------------------------
 OvmfPkg/OvmfPkgIa32.dsc                      |  1 +
 OvmfPkg/OvmfPkgIa32X64.dsc                   |  1 +
 OvmfPkg/OvmfPkgX64.dsc                       |  1 +
 4 files changed, 5 insertions(+), 36 deletions(-)
diff mbox

Patch

diff --git a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
index e974d3f..4b76c6e 100644
--- a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
+++ b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
@@ -1062,10 +1062,6 @@  Returns:
 {
   EFI_STATUS                         Status;
   UINT16                             Timeout;
-  EFI_EVENT                          UserInputDurationTime;
-  UINTN                              Index;
-  EFI_INPUT_KEY                      Key;
-  EFI_TPL                            OldTpl;
   EFI_BOOT_MODE                      BootMode;
 
   DEBUG ((EFI_D_INFO, "PlatformBdsPolicyBehavior\n"));
@@ -1114,19 +1110,7 @@  Returns:
     //
     PlatformBdsNoConsoleAction ();
   }
-  //
-  // Create a 300ms duration event to ensure user has enough input time to enter Setup
-  //
-  Status = gBS->CreateEvent (
-                  EVT_TIMER,
-                  0,
-                  NULL,
-                  NULL,
-                  &UserInputDurationTime
-                  );
-  ASSERT (Status == EFI_SUCCESS);
-  Status = gBS->SetTimer (UserInputDurationTime, TimerRelative, 3000000);
-  ASSERT (Status == EFI_SUCCESS);
+
   //
   // Memory test and Logo show
   //
@@ -1153,25 +1137,7 @@  Returns:
   //
   BdsLibBuildOptionFromVar (BootOptionList, L"BootOrder");
 
-  //
-  // To give the User a chance to enter Setup here, if user set TimeOut is 0.
-  // BDS should still give user a chance to enter Setup
-  //
-  // Check whether the user input after the duration time has expired
-  //
-  OldTpl = EfiGetCurrentTpl();
-  gBS->RestoreTPL (TPL_APPLICATION);
-  gBS->WaitForEvent (1, &UserInputDurationTime, &Index);
-  gBS->CloseEvent (UserInputDurationTime);
-  Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
-  gBS->RaiseTPL (OldTpl);
-
-  if (!EFI_ERROR (Status)) {
-    //
-    // Enter Setup if user input
-    //
-    PlatformBdsEnterFrontPage (Timeout, TRUE);
-  }
+  PlatformBdsEnterFrontPage (Timeout, TRUE);
 }
 
 VOID
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 8527ece..22bb71d 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -331,6 +331,7 @@ 
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
 
+  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0
 
 ################################################################################
 #
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 823f005..0cf2ca1 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -337,6 +337,7 @@ 
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
 
+  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0
 
 ################################################################################
 #
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 4f1404d..3730d02 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -358,6 +358,7 @@ 
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
   gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
 
+  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0
 
 ################################################################################
 #