[PATCH 1/1] efi_loader: provide variable BootOptionSupport
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Fri Oct 11 19:33:40 CEST 2024
The UEFI variable BootOptionSupport is required by the UEFI specification
[1]. It reports if specific types of boot options are honored.
We don't support any of these extras. So we should set the value 0.
[1] 3.1.4 Boot Manager Capabilities, UEFI Specification 2.10 Errata A,
Cc: Vincent Stehlé <vincent.stehle at arm.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
---
lib/efi_loader/efi_setup.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
index a610e032d2f..05d035f4eb5 100644
--- a/lib/efi_loader/efi_setup.c
+++ b/lib/efi_loader/efi_setup.c
@@ -179,6 +179,22 @@ static efi_status_t efi_init_os_indications(void)
&os_indications_supported, false);
}
+/**
+ * efi_init_boot_options_support() - indicate supported boot option types
+ */
+static efi_status_t efi_init_boot_options_support(void)
+{
+ u32 boot_options_support = 0;
+
+ return efi_set_variable_int(u"BootOptionSupport",
+ &efi_global_variable_guid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
+ EFI_VARIABLE_RUNTIME_ACCESS |
+ EFI_VARIABLE_READ_ONLY,
+ sizeof(boot_options_support),
+ &boot_options_support, false);
+}
+
/**
* efi_init_early() - handle initialization at early stage
*
@@ -261,6 +277,13 @@ efi_status_t efi_init_obj_list(void)
if (ret != EFI_SUCCESS)
goto out;
+ /* Indicate supported boot option types */
+ if (IS_ENABLED(CONFIG_EFI_BOOTMGR)) {
+ ret = efi_init_boot_options_support();
+ if (ret != EFI_SUCCESS)
+ goto out;
+ }
+
/* Initialize system table */
ret = efi_initialize_system_table();
if (ret != EFI_SUCCESS)
--
2.45.2
More information about the U-Boot
mailing list