From 07bb2265426d94411c7f185478e614f624c56050 Mon Sep 17 00:00:00 2001 From: Luigi Leonardi Date: Fri, 13 Dec 2024 12:18:04 +0100 Subject: OvmfPkg: Add a runtime switch for PlatformRegisterFvBootOption Add a new parameter to selectively enable or disable the BootOption. Signed-off-by: Luigi Leonardi --- OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c index a44e45df8f..579eae8780 100644 --- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c +++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c @@ -86,7 +86,8 @@ VOID PlatformRegisterFvBootOption ( EFI_GUID *FileGuid, CHAR16 *Description, - UINT32 Attributes + UINT32 Attributes, + BOOLEAN Enabled ) { EFI_STATUS Status; @@ -138,9 +139,15 @@ PlatformRegisterFvBootOption ( BootOptionCount ); - if (OptionIndex == -1) { + if ((OptionIndex == -1) && Enabled) { Status = EfiBootManagerAddLoadOptionVariable (&NewOption, MAX_UINTN); ASSERT_EFI_ERROR (Status); + } else if ((OptionIndex != -1) && !Enabled) { + Status = EfiBootManagerDeleteLoadOptionVariable ( + BootOptions[OptionIndex].OptionNumber, + LoadOptionTypeBoot + ); + ASSERT_EFI_ERROR (Status); } EfiBootManagerFreeLoadOption (&NewOption); @@ -1842,7 +1849,8 @@ PlatformBootManagerAfterConsole ( PlatformRegisterFvBootOption ( &gUefiShellFileGuid, L"EFI Internal Shell", - LOAD_OPTION_ACTIVE + LOAD_OPTION_ACTIVE, + TRUE ); // @@ -1851,7 +1859,8 @@ PlatformBootManagerAfterConsole ( PlatformRegisterFvBootOption ( &gGrubFileGuid, L"Grub Bootloader", - LOAD_OPTION_ACTIVE + LOAD_OPTION_ACTIVE, + TRUE ); RemoveStaleFvFileOptions (); -- cgit