From 9b08c655ff683e7438d13a29b13e550ea70be224 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Wed, 4 Mar 2020 10:44:12 +0100 Subject: OvmfPkg/PlatformBootManagerLib: sync Timeout with PcdPlatformBootTimeOut MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set the Timeout global variable to the same value as PcdPlatformBootTimeOut. This way the "setvar" command in the UEFI shell, and the "efibootmgr" command in a Linux guest, can report the front page timeout that was requested on the QEMU command line (see GetFrontPageTimeoutFromQemu()). A DEBUG_VERBOSE message is logged on success too, for our QE team's sake. Cc: Ard Biesheuvel Cc: Jordan Justen Cc: Philippe Mathieu-Daudé Signed-off-by: Laszlo Ersek Message-Id: <20200304094413.19462-2-lersek@redhat.com> Reviewed-by: Ard Biesheuvel Reviewed-by: Philippe Mathieu-Daude --- .../Library/PlatformBootManagerLib/BdsPlatform.c | 26 ++++++++++++++++++++-- .../PlatformBootManagerLib.inf | 2 ++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c index 8af9b71..45d0ee9 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c +++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c @@ -353,6 +353,7 @@ PlatformBootManagerBeforeConsole ( { EFI_HANDLE Handle; EFI_STATUS Status; + UINT16 FrontPageTimeout; RETURN_STATUS PcdStatus; DEBUG ((EFI_D_INFO, "PlatformBootManagerBeforeConsole\n")); @@ -400,9 +401,30 @@ PlatformBootManagerBeforeConsole ( PlatformInitializeConsole ( XenDetected() ? gXenPlatformConsole : gPlatformConsole); - PcdStatus = PcdSet16S (PcdPlatformBootTimeOut, - GetFrontPageTimeoutFromQemu ()); + + FrontPageTimeout = GetFrontPageTimeoutFromQemu (); + PcdStatus = PcdSet16S (PcdPlatformBootTimeOut, FrontPageTimeout); ASSERT_RETURN_ERROR (PcdStatus); + // + // Reflect the PCD in the standard Timeout variable. + // + Status = gRT->SetVariable ( + EFI_TIME_OUT_VARIABLE_NAME, + &gEfiGlobalVariableGuid, + (EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS), + sizeof FrontPageTimeout, + &FrontPageTimeout + ); + DEBUG (( + EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE, + "%a: SetVariable(%s, %u): %r\n", + __FUNCTION__, + EFI_TIME_OUT_VARIABLE_NAME, + FrontPageTimeout, + Status + )); PlatformRegisterOptionsAndKeys (); diff --git a/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index f89cce1..c479f11 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -38,6 +38,7 @@ BaseLib MemoryAllocationLib UefiBootServicesTableLib + UefiRuntimeServicesTableLib BaseMemoryLib DebugLib PcdLib @@ -79,5 +80,6 @@ [Guids] gEfiEndOfDxeEventGroupGuid + gEfiGlobalVariableGuid gRootBridgesConnectedEventGroupGuid gUefiShellFileGuid -- cgit v1.1