]> Git Repo - J-u-boot.git/commitdiff
common: fit: Allow U-Boot images to be booted
author[email protected] <[email protected]>
Wed, 20 Jul 2016 06:32:50 +0000 (08:32 +0200)
committerTom Rini <[email protected]>
Mon, 25 Jul 2016 16:00:05 +0000 (12:00 -0400)
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 <[email protected]>
Reviewed-by: Tom Rini <[email protected]>
common/image-fit.c

index 6f920da2204348ce321f5d7def54a355b516727f..73ad34e491ba2fdeccaa3de11b6e4f8440bea122 100644 (file)
@@ -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);
 
        /*
This page took 0.038897 seconds and 4 git commands to generate.