To allow booting EFI payloads on ARM and to control whether EFI stub or normal DT boot should be attempted, add a filetype for EFI-stubbed zImages.
Signed-off-by: Ahmad Fatoum <[email protected]> --- common/filetype.c | 4 +++- include/filetype.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/common/filetype.c b/common/filetype.c index 196591698768..b82667c30a4b 100644 --- a/common/filetype.c +++ b/common/filetype.c @@ -31,6 +31,7 @@ static const struct filetype_str filetype_str[] = { [filetype_unknown] = { "unknown", "unknown" }, [filetype_empty] = { "empty", "empty" }, [filetype_arm_zimage] = { "ARM Linux zImage", "arm-zimage" }, + [filetype_arm_efi_zimage] = { "ARM/EFI Linux zImage", "arm-efi-zimage" }, [filetype_lzo_compressed] = { "LZO compressed", "lzo" }, [filetype_lz4_compressed] = { "LZ4 compressed", "lz4" }, [filetype_arm_barebox] = { "ARM barebox image", "arm-barebox" }, @@ -441,7 +442,7 @@ enum filetype file_detect_type(const void *_buf, size_t bufsize) if (is_barebox_arm_head(_buf)) return filetype_arm_barebox; if (buf[9] == 0x016f2818 || buf[9] == 0x18286f01) - return filetype_arm_zimage; + return is_dos_exe(buf8) ? filetype_arm_efi_zimage : filetype_arm_zimage; if (is_dos_exe(buf8)) return filetype_exe; @@ -585,6 +586,7 @@ bool filetype_is_barebox_image(enum filetype ft) bool filetype_is_linux_efi_image(enum filetype ft) { switch (ft) { + case filetype_arm_efi_zimage: case filetype_arm64_efi_linux_image: case filetype_riscv_efi_linux_image: case filetype_x86_efi_linux_image: diff --git a/include/filetype.h b/include/filetype.h index 283b8fee4c70..aed02fcc2566 100644 --- a/include/filetype.h +++ b/include/filetype.h @@ -13,6 +13,7 @@ enum filetype { filetype_unknown, filetype_empty, filetype_arm_zimage, + filetype_arm_efi_zimage, filetype_lzo_compressed, filetype_lz4_compressed, filetype_arm_barebox, -- 2.47.3
