[PATCH v3 44/46] boot: Detect booti format properly in pxe_utils
Simon Glass
sjg at chromium.org
Fri Dec 6 03:36:23 CET 2024
Rather than assuming that a file can be booted with bootm, check that
the format is correct first. Do the same for booti.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v3:
- Add new patch to detect booti format properly in pxe_utils
boot/pxe_utils.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
index 1468a8e8498..71347b19119 100644
--- a/boot/pxe_utils.c
+++ b/boot/pxe_utils.c
@@ -591,6 +591,7 @@ static int label_run_boot(struct pxe_context *ctx, struct pxe_label *label,
ulong kernel_addr_r;
int ret = 0;
void *buf;
+ enum image_fmt_t fmt;
bootm_init(&bmi);
@@ -608,13 +609,18 @@ static int label_run_boot(struct pxe_context *ctx, struct pxe_label *label,
kernel_addr_r = genimg_get_kernel_addr(kernel_addr);
buf = map_sysmem(kernel_addr_r, 0);
- /* Try bootm for legacy and FIT format image */
- if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID &&
- IS_ENABLED(CONFIG_CMD_BOOTM)) {
+ /*
+ * Try bootm for legacy and FIT format image, assume booti if
+ * compressed
+ */
+ fmt = genimg_get_format_comp(buf);
+
+ if (IS_ENABLED(CONFIG_CMD_BOOTM) && (fmt == IMAGE_FORMAT_FIT ||
+ fmt == IMAGE_FORMAT_LEGACY)) {
log_debug("using bootm\n");
ret = bootm_run(&bmi);
/* Try booting an AArch64 Linux kernel image */
- } else if (IS_ENABLED(CONFIG_CMD_BOOTI)) {
+ } else if (IS_ENABLED(CONFIG_CMD_BOOTI) && fmt == IMAGE_FORMAT_BOOTI) {
log_debug("using booti\n");
ret = booti_run(&bmi);
/* Try booting a Image */
--
2.34.1
More information about the U-Boot
mailing list