From 5fbb28958becc2e725d2ee14a35c3b2f0918c62f Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 11 Feb 2019 15:24:00 +0100 Subject: efi_loader: Make HII a config option Heinrich ran into issues with HII and iPXE which lead to #SErrors on his Odroid-C2 system. We definitely do not want to regress just yet, so let's not expose the HII protocols by default. Instead, let's make it a config option that people can play with This way, we can stabilize the code in tree without breaking any users. Once someone figures out, why this breaks iPXE (probably a NULL dereference), we can enable it by default. Reported-by: Heinrich Schuchardt Signed-off-by: Alexander Graf --- v1 -> v2: - Remove HII selftest as well v2 -> v3: - Make config option --- lib/efi_loader/Kconfig | 15 +++++++++++++++ lib/efi_loader/efi_boottime.c | 2 ++ 2 files changed, 17 insertions(+) (limited to 'lib/efi_loader') diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index f5de005ff8b..23487b8130e 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -34,3 +34,18 @@ config EFI_LOADER_BOUNCE_BUFFER Some hardware does not support DMA to full 64bit addresses. For this hardware we can create a bounce buffer so that payloads don't have to worry about platform details. + +config EFI_LOADER_HII + bool "Expose HII protocols to EFI applications" + depends on EFI_LOADER + default n + help + The Human Interface Infrastructure is a complicated framework that + allows UEFI applications to draw fancy menus and hook strings using + a translation framework. + + U-Boot implements enough of its features to be able to run the UEFI + Shell, but not more than that. The code is experimental still, so + beware that your system might break with HII enabled. + + If unsure, say n. diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index fc26d6adc11..f74f989e0ae 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -1558,6 +1558,7 @@ efi_status_t efi_setup_loaded_image(struct efi_device_path *device_path, if (ret != EFI_SUCCESS) goto failure; +#if CONFIG_IS_ENABLED(EFI_LOADER_HII) ret = efi_add_protocol(&obj->header, &efi_guid_hii_string_protocol, (void *)&efi_hii_string); @@ -1575,6 +1576,7 @@ efi_status_t efi_setup_loaded_image(struct efi_device_path *device_path, (void *)&efi_hii_config_routing); if (ret != EFI_SUCCESS) goto failure; +#endif return ret; failure: -- cgit v1.2.3