uboot-mediatek: no compression means IH_COMP_NONE
authorDaniel Golle <daniel@makrotopia.org>
Mon, 15 Aug 2022 11:19:15 +0000 (13:19 +0200)
committerDaniel Golle <daniel@makrotopia.org>
Sun, 28 Aug 2022 19:33:15 +0000 (20:33 +0100)
Treat missing compression node in FIT image as IH_COMP_NONE.
This is implicentely already happening in most places, but for now
was still triggering an annoying warning about initramfs compression
being obsolete despite compression note being absent.
Fix this.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
package/boot/uboot-mediatek/patches/060-bootm-fix-typo-imape_comp-image_comp.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/061-image-fit-don-t-set-compression-if-it-can-t-be-read.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/200-cmd-add-imsz-and-imszb.patch

diff --git a/package/boot/uboot-mediatek/patches/060-bootm-fix-typo-imape_comp-image_comp.patch b/package/boot/uboot-mediatek/patches/060-bootm-fix-typo-imape_comp-image_comp.patch
new file mode 100644 (file)
index 0000000..e9777db
--- /dev/null
@@ -0,0 +1,48 @@
+From 22832a0a15227e3fcc364b356247d8aeb9ce45b3 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Sat, 27 Aug 2022 04:05:31 +0100
+Subject: [PATCH 1/2] bootm: fix typo imape_comp -> image_comp
+
+Chage variable name 'imape_comp' to the supposedly intended name
+'image_comp'.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ boot/bootm.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/boot/bootm.c
++++ b/boot/bootm.c
+@@ -1006,7 +1006,7 @@ static int bootm_host_load_image(const v
+       int noffset;
+       ulong load_end;
+       uint8_t image_type;
+-      uint8_t imape_comp;
++      uint8_t image_comp;
+       void *load_buf;
+       int ret;
+@@ -1024,20 +1024,20 @@ static int bootm_host_load_image(const v
+               return -EINVAL;
+       }
+-      if (fit_image_get_comp(fit, noffset, &imape_comp)) {
++      if (fit_image_get_comp(fit, noffset, &image_comp)) {
+               puts("Can't get image compression!\n");
+               return -EINVAL;
+       }
+       /* Allow the image to expand by a factor of 4, should be safe */
+       load_buf = malloc((1 << 20) + len * 4);
+-      ret = image_decomp(imape_comp, 0, data, image_type, load_buf,
++      ret = image_decomp(image_comp, 0, data, image_type, load_buf,
+                          (void *)data, len, CONFIG_SYS_BOOTM_LEN,
+                          &load_end);
+       free(load_buf);
+       if (ret) {
+-              ret = handle_decomp_error(imape_comp, load_end - 0, ret);
++              ret = handle_decomp_error(image_comp, load_end - 0, ret);
+               if (ret != BOOTM_ERR_UNIMPLEMENTED)
+                       return ret;
+       }
diff --git a/package/boot/uboot-mediatek/patches/061-image-fit-don-t-set-compression-if-it-can-t-be-read.patch b/package/boot/uboot-mediatek/patches/061-image-fit-don-t-set-compression-if-it-can-t-be-read.patch
new file mode 100644 (file)
index 0000000..2eed6ae
--- /dev/null
@@ -0,0 +1,71 @@
+From b2c109c012ca946baebbb23e7f4301f6eee4c6f3 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Mon, 15 Aug 2022 12:15:50 +0200
+Subject: [PATCH 2/2] image-fit: don't set compression if it can't be read
+
+fit_image_get_comp() should not set value -1 in case it can't read
+the compression node. Instead, leave the value untouched in that case
+as it can be absent and a default value previously defined by the
+caller of fit_image_get_comp() should be used.
+
+As a result the warning message
+WARNING: 'compression' nodes for ramdisks are deprecated, please fix your .its file!
+no longer shows if the compression node is actually absent.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ boot/bootm.c     | 6 ++----
+ boot/image-fit.c | 3 +--
+ cmd/ximg.c       | 7 ++-----
+ 3 files changed, 5 insertions(+), 11 deletions(-)
+
+--- a/boot/bootm.c
++++ b/boot/bootm.c
+@@ -1024,10 +1024,8 @@ static int bootm_host_load_image(const v
+               return -EINVAL;
+       }
+-      if (fit_image_get_comp(fit, noffset, &image_comp)) {
+-              puts("Can't get image compression!\n");
+-              return -EINVAL;
+-      }
++      if (fit_image_get_comp(fit, noffset, &image_comp))
++              image_comp = IH_COMP_NONE;
+       /* Allow the image to expand by a factor of 4, should be safe */
+       load_buf = malloc((1 << 20) + len * 4);
+--- a/boot/image-fit.c
++++ b/boot/image-fit.c
+@@ -477,7 +477,7 @@ void fit_print_contents(const void *fit)
+ void fit_image_print(const void *fit, int image_noffset, const char *p)
+ {
+       char *desc;
+-      uint8_t type, arch, os, comp;
++      uint8_t type, arch, os, comp = IH_COMP_NONE;
+       size_t size;
+       ulong load, entry;
+       const void *data;
+@@ -794,7 +794,6 @@ int fit_image_get_comp(const void *fit,
+       data = fdt_getprop(fit, noffset, FIT_COMP_PROP, &len);
+       if (data == NULL) {
+               fit_get_debug(fit, noffset, FIT_COMP_PROP, len);
+-              *comp = -1;
+               return -1;
+       }
+--- a/cmd/ximg.c
++++ b/cmd/ximg.c
+@@ -171,11 +171,8 @@ do_imgextract(struct cmd_tbl *cmdtp, int
+                       return 1;
+               }
+-              if (fit_image_get_comp(fit_hdr, noffset, &comp)) {
+-                      puts("Could not find script subimage "
+-                              "compression type\n");
+-                      return 1;
+-              }
++              if (fit_image_get_comp(fit_hdr, noffset, &comp))
++                      comp = IH_COMP_NONE;
+               data = (ulong)fit_data;
+               len = (ulong)fit_len;
index 9031e37f55ad8ea86a47595eb7e0469604c943ec..cc6aa64cbc5598a5a0f29aa1e94bfe5cacbdd2f6 100644 (file)
@@ -70,7 +70,7 @@
  {
 --- a/boot/image-fit.c
 +++ b/boot/image-fit.c
-@@ -1995,6 +1995,51 @@ static const char *fit_get_image_type_pr
+@@ -1994,6 +1994,51 @@ static const char *fit_get_image_type_pr
        return "unknown";
  }