diff --git a/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c b/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c index 5f6cfe64da..69448ff65b 100644 --- a/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c +++ b/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c @@ -25,6 +25,7 @@ #include <Protocol/PciRootBridgeIo.h> #include <Protocol/VirtioDevice.h> #include <Guid/EventGroup.h> +#include <Guid/GlobalVariable.h> #include <Guid/RootBridgesConnectedEventGroup.h> #include <Guid/SerialPortLibVendor.h> @@ -686,7 +687,9 @@ PlatformBootManagerBeforeConsole ( VOID ) { + UINT16 FrontPageTimeout; RETURN_STATUS PcdStatus; + EFI_STATUS Status; // // Signal EndOfDxe PI Event @@ -744,9 +747,29 @@ PlatformBootManagerBeforeConsole ( // // Set the front page timeout from the QEMU configuration. // - 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 + )); // // Register platform-specific boot options and keyboard shortcuts. diff --git a/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index a9d4888d43..6fe0a1bb12 100644 --- a/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -68,6 +68,7 @@ gEfiFileSystemInfoGuid gEfiFileSystemVolumeLabelInfoIdGuid gEfiEndOfDxeEventGroupGuid + gEfiGlobalVariableGuid gRootBridgesConnectedEventGroupGuid gUefiShellFileGuid