From 5fbb28958becc2e725d2ee14a35c3b2f0918c62f Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 11 Feb 2019 15:24:00 +0100 Subject: [PATCH] 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 ++ lib/efi_selftest/Makefile | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index f5de005ff8..23487b8130 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 fc26d6adc1..f74f989e0a 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: diff --git a/lib/efi_selftest/Makefile b/lib/efi_selftest/Makefile index 779f549940..7f4eafb2fe 100644 --- a/lib/efi_selftest/Makefile +++ b/lib/efi_selftest/Makefile @@ -25,7 +25,6 @@ efi_selftest_exception.o \ efi_selftest_exitbootservices.o \ efi_selftest_fdt.o \ efi_selftest_gop.o \ -efi_selftest_hii.o \ efi_selftest_loaded_image.o \ efi_selftest_manageprotocols.o \ efi_selftest_memory.o \ @@ -41,6 +40,7 @@ efi_selftest_variables.o \ efi_selftest_watchdog.o obj-$(CONFIG_CPU_V7) += efi_selftest_unaligned.o +obj-$(CONFIG_EFI_LOADER_HII) += efi_selftest_hii.o ifeq ($(CONFIG_BLK)$(CONFIG_PARTITIONS),yy) obj-y += efi_selftest_block_device.o -- 2.25.1