Merge tag 'efi-2022-04-rc3-2' of https://source.denx.de/u-boot/custodians/u-boot-efi
authorTom Rini <trini@konsulko.com>
Sun, 13 Mar 2022 12:18:17 +0000 (08:18 -0400)
committerTom Rini <trini@konsulko.com>
Sun, 13 Mar 2022 12:18:17 +0000 (08:18 -0400)
Pull request for efi-2022-04-rc3-2

Documentation:
* Fix description for SiFive Unmatched
* Add libgnutls28-dev to build dependencies

UEFI
* Avoid possibly invalid GUID pointers for protocol interfaces

Other
* Serial console support for cls command

cmd/cls.c
doc/board/sifive/unmatched.rst
doc/build/gcc.rst
include/efi_loader.h
lib/efi_loader/efi_boottime.c
lib/efi_loader/efi_image_loader.c

index eab4e69..bdeb497 100644 (file)
--- a/cmd/cls.c
+++ b/cmd/cls.c
 #include <lcd.h>
 #include <video.h>
 
+#define CSI "\x1b["
+
 static int do_video_clear(struct cmd_tbl *cmdtp, int flag, int argc,
                          char *const argv[])
 {
-#if defined(CONFIG_DM_VIDEO)
-       struct udevice *dev;
+       __maybe_unused struct udevice *dev;
 
+       /*  Send clear screen and home */
+       printf(CSI "2J" CSI "1;1H");
+#if defined(CONFIG_DM_VIDEO)
+#if !defined(CONFIG_VIDEO_ANSI)
        if (uclass_first_device_err(UCLASS_VIDEO, &dev))
                return CMD_RET_FAILURE;
 
        if (video_clear(dev))
                return CMD_RET_FAILURE;
+#endif
 #elif defined(CONFIG_CFB_CONSOLE)
        video_clear();
 #elif defined(CONFIG_LCD)
index 24a8899..a994422 100644 (file)
@@ -560,7 +560,7 @@ Write U-boot SPL and U-boot to their partitions.
 
 .. code-block:: none
 
-       dd if=u-boot-spl.bin of=/dev/mtdblock0 bs=4096 seek=5 conv=sync
+       dd if=spl/u-boot-spl.bin of=/dev/mtdblock0 bs=4096 seek=5 conv=sync
        dd if=u-boot.itb  of=/dev/mtdblock0 bs=4096 seek=261 conv=sync
 
 Power off the board.
index b883cf7..470a7aa 100644 (file)
@@ -25,11 +25,12 @@ Depending on the build targets further packages maybe needed
 
     sudo apt-get install bc bison build-essential coccinelle \
       device-tree-compiler dfu-util efitools flex gdisk graphviz imagemagick \
-      liblz4-tool libguestfs-tools libncurses-dev libpython3-dev libsdl2-dev \
-      libssl-dev lz4 lzma lzma-alone openssl pkg-config python3 \
-      python3-coverage python3-pkg-resources python3-pycryptodome \
-      python3-pyelftools python3-pytest python3-sphinxcontrib.apidoc \
-      python3-sphinx-rtd-theme python3-virtualenv swig
+      liblz4-tool libgnutls28-dev libguestfs-tools libncurses-dev \
+      libpython3-dev libsdl2-dev libssl-dev lz4 lzma lzma-alone openssl \
+      pkg-config python3 python3-coverage python3-pkg-resources \
+      python3-pycryptodome python3-pyelftools python3-pytest \
+      python3-sphinxcontrib.apidoc python3-sphinx-rtd-theme python3-virtualenv \
+      swig
 
 SUSE based
 ~~~~~~~~~~
index e390d32..110d8ae 100644 (file)
@@ -342,7 +342,7 @@ struct efi_open_protocol_info_item {
  */
 struct efi_handler {
        struct list_head link;
-       const efi_guid_t *guid;
+       const efi_guid_t guid;
        void *protocol_interface;
        struct list_head open_infos;
 };
index 82128ac..d0f3e05 100644 (file)
@@ -552,7 +552,7 @@ efi_status_t efi_search_protocol(const efi_handle_t handle,
                struct efi_handler *protocol;
 
                protocol = list_entry(lhandle, struct efi_handler, link);
-               if (!guidcmp(protocol->guid, protocol_guid)) {
+               if (!guidcmp(&protocol->guid, protocol_guid)) {
                        if (handler)
                                *handler = protocol;
                        return EFI_SUCCESS;
@@ -604,7 +604,7 @@ efi_status_t efi_remove_all_protocols(const efi_handle_t handle)
        list_for_each_entry_safe(protocol, pos, &efiobj->protocols, link) {
                efi_status_t ret;
 
-               ret = efi_remove_protocol(handle, protocol->guid,
+               ret = efi_remove_protocol(handle, &protocol->guid,
                                          protocol->protocol_interface);
                if (ret != EFI_SUCCESS)
                        return ret;
@@ -1131,7 +1131,7 @@ efi_status_t efi_add_protocol(const efi_handle_t handle,
        handler = calloc(1, sizeof(struct efi_handler));
        if (!handler)
                return EFI_OUT_OF_RESOURCES;
-       handler->guid = protocol;
+       memcpy((void *)&handler->guid, protocol, sizeof(efi_guid_t));
        handler->protocol_interface = protocol_interface;
        INIT_LIST_HEAD(&handler->open_infos);
        list_add_tail(&handler->link, &efiobj->protocols);
@@ -1227,7 +1227,7 @@ static efi_status_t efi_get_drivers(efi_handle_t handle,
 
        /* Count all driver associations */
        list_for_each_entry(handler, &handle->protocols, link) {
-               if (protocol && guidcmp(handler->guid, protocol))
+               if (protocol && guidcmp(&handler->guid, protocol))
                        continue;
                list_for_each_entry(item, &handler->open_infos, link) {
                        if (item->info.attributes &
@@ -1249,7 +1249,7 @@ static efi_status_t efi_get_drivers(efi_handle_t handle,
                return EFI_OUT_OF_RESOURCES;
        /* Collect unique driver handles */
        list_for_each_entry(handler, &handle->protocols, link) {
-               if (protocol && guidcmp(handler->guid, protocol))
+               if (protocol && guidcmp(&handler->guid, protocol))
                        continue;
                list_for_each_entry(item, &handler->open_infos, link) {
                        if (item->info.attributes &
@@ -2446,7 +2446,7 @@ static efi_status_t EFIAPI efi_protocols_per_handle(
 
                        protocol = list_entry(protocol_handle,
                                              struct efi_handler, link);
-                       (*protocol_buffer)[j] = (void *)protocol->guid;
+                       (*protocol_buffer)[j] = (void *)&protocol->guid;
                        ++j;
                }
        }
@@ -3094,7 +3094,7 @@ close_next:
                                    (efi_handle_t)image_obj)
                                        continue;
                                r = EFI_CALL(efi_close_protocol
-                                               (efiobj, protocol->guid,
+                                               (efiobj, &protocol->guid,
                                                 info->info.agent_handle,
                                                 info->info.controller_handle
                                                ));
index 5df3593..9611398 100644 (file)
@@ -91,7 +91,7 @@ void efi_print_image_infos(void *pc)
 
        list_for_each_entry(efiobj, &efi_obj_list, link) {
                list_for_each_entry(handler, &efiobj->protocols, link) {
-                       if (!guidcmp(handler->guid, &efi_guid_loaded_image)) {
+                       if (!guidcmp(&handler->guid, &efi_guid_loaded_image)) {
                                efi_print_image_info(
                                        (struct efi_loaded_image_obj *)efiobj,
                                        handler->protocol_interface, pc);