efi_loader: Make HII a config option
authorAlexander Graf <agraf@suse.de>
Mon, 11 Feb 2019 14:24:00 +0000 (15:24 +0100)
committerAlexander Graf <agraf@suse.de>
Wed, 13 Feb 2019 08:40:06 +0000 (09:40 +0100)
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 <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---

v1 -> v2:

  - Remove HII selftest as well

v2 -> v3:

  - Make config option

lib/efi_loader/Kconfig
lib/efi_loader/efi_boottime.c
lib/efi_selftest/Makefile

index f5de005ff8bbd8a7412beae1a5bcf88c9b44a8da..23487b8130e2e31630188f97db73b57d5c43243e 100644 (file)
@@ -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.
index fc26d6adc1120ac4072f771cc1cf04307818e6a2..f74f989e0ae39bab5c54661dc5243c2219bcf134 100644 (file)
@@ -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:
index 779f549940677298ba5923f61ad0be8f4f4530af..7f4eafb2fef013e5b9af70e3863e5f95020732f0 100644 (file)
@@ -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