@@ -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 */
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@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(-)