From: mario.six@gdsys.cc Date: Wed, 20 Jul 2016 06:32:50 +0000 (+0200) Subject: common: fit: Allow U-Boot images to be booted X-Git-Tag: KARO-TXSD-2017-03-15~488 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=e8fb4358c2ea3b5629f004f7d0d5624c860d7e70;p=karo-tx-uboot.git common: fit: Allow U-Boot images to be booted In certain circumstances it comes in handy to be able to boot into a second U-Boot. But as of now it is not possible to boot a U-Boot binary that is inside a FIT image, which is problematic for projects that e.g. need to guarantee a unbroken chain of trust from SOC all the way into the OS, since the FIT signing mechanism cannot be used. This patch adds the capability to load such FIT images. An example .its snippet (utilizing signature verification) might look like the following: images { firmware@1 { description = "2nd stage U-Boot image"; data = /incbin/("u-boot-dtb.img.gz"); type = "firmware"; arch = "arm"; os = "u-boot"; compression = "gzip"; load = <0x8FFFC0>; entry = <0x900000>; signature@1 { algo = "sha256,rsa4096"; key-name-hint = "key"; }; }; }; Signed-off-by: Mario Six Reviewed-by: Tom Rini --- diff --git a/common/image-fit.c b/common/image-fit.c index 6f920da220..73ad34e491 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -1684,12 +1684,13 @@ int fit_image_load(bootm_headers_t *images, ulong addr, bootstage_mark(bootstage_id + BOOTSTAGE_SUB_CHECK_ALL); type_ok = fit_image_check_type(fit, noffset, image_type) || - (image_type == IH_TYPE_KERNEL && - fit_image_check_type(fit, noffset, - IH_TYPE_KERNEL_NOLOAD)); + fit_image_check_type(fit, noffset, IH_TYPE_FIRMWARE) || + (image_type == IH_TYPE_KERNEL && + fit_image_check_type(fit, noffset, IH_TYPE_KERNEL_NOLOAD)); os_ok = image_type == IH_TYPE_FLATDT || IH_TYPE_FPGA || fit_image_check_os(fit, noffset, IH_OS_LINUX) || + fit_image_check_os(fit, noffset, IH_OS_U_BOOT) || fit_image_check_os(fit, noffset, IH_OS_OPENRTOS); /*