01 Apr, 2020

2 commits


04 Feb, 2020

2 commits

  • Android Boot Image v1 adds "Recovery DTB" field in image header and
    associate payload in boot image itself [1]. Payload should be in
    Android DTB/DTBO format [2]. That "Recovery DTB" area should be only
    populated for non-A/B devices, and only in recovery image.

    Add function to get an address and size of that payload. That function
    can be further used e.g. in 'abootimg' command to provide the user a way
    to get the address of recovery dtbo from U-Boot shell, which can be
    further parsed using 'adtimg' command.

    [1] https://source.android.com/devices/bootloader/boot-image-header
    [2] https://source.android.com/devices/architecture/dto/partitions

    Signed-off-by: Sam Protsenko
    Signed-off-by: Lokesh Vutla

    Sam Protsenko
     
  • Android Boot Image v2 adds "DTB" payload (and corresponding field in the
    image header). Provide functions for its handling:

    - android_image_get_dtb_by_index(): Obtain DTB blob from "DTB" part of
    boot image, by blob's index
    - android_image_print_dtb_contents(): Iterate over all DTB blobs in
    "DTB" part of boot image and print those blobs info

    "DTB" payload might be in one of the following formats:
    1. concatenated DTB blobs
    2. Android DTBO format

    The latter requires "android-image-dt.c" functionality, so this commit
    selects that file for building for CONFIG_ANDROID_BOOT_IMAGE option.

    Right now this new functionality isn't used, but it can be used further.
    As it's required to apply some specific dtbo blob(s) from "dtbo"
    partition, we can't automate this process inside of "bootm" command. But
    we can do next:
    - come up with some new command like "abootimg" to extract dtb blob
    from boot image (using functions from this patch)
    - extract desired dtbo blobs from "dtbo" partition using "adtimg"
    command
    - merge dtbo blobs into dtb blob using "fdt apply" command
    - pass resulting dtb blob into bootm command in order to boot the
    Android kernel with Android ramdisk from boot image

    Signed-off-by: Sam Protsenko
    Signed-off-by: Lokesh Vutla

    Sam Protsenko
     

18 Jan, 2020

2 commits


17 Jan, 2020

2 commits

  • This commit add to u-boot the support to decrypt
    fit image encrypted with aes. The FIT image contains
    the key name and the IV name. Then u-boot look for
    the key and IV in his device tree and decrypt images
    before moving to the next stage.

    Signed-off-by: Philippe Reynes

    Philippe Reynes
     
  • This commit add the support of encrypting image with aes
    in mkimage. To enable the ciphering, a node cipher with
    a reference to a key and IV (Initialization Vector) must
    be added to the its file. Then mkimage add the encrypted
    image to the FIT and add the key and IV to the u-boot
    device tree.

    Signed-off-by: Philippe Reynes

    Philippe Reynes
     

08 Jan, 2020

1 commit

  • Add a new OS type to be used for chain-loading an EFI compatible
    firmware or boot loader like GRUB2, possibly in a verified boot
    scenario.

    Bellow is sample ITS file that generates a FIT image supporting
    secure boot. Please note the presence of 'os = "efi";' line, which
    identifies the currently introduced OS type:

    / {
    #address-cells = ;

    images {
    efi-grub {
    description = "GRUB EFI";
    data = /incbin/("bootarm.efi");
    type = "kernel_noload";
    arch = "arm";
    os = "efi";
    compression = "none";
    load = ;
    entry = ;
    hash-1 {
    algo = "sha256";
    };
    };
    };

    configurations {
    default = "config-grub";
    config-grub {
    kernel = "efi-grub";
    signature-1 {
    algo = "sha256,rsa2048";
    sign-images = "kernel";
    };
    };
    };
    };

    Signed-off-by: Cristian Ciocaltea
    Reviewed-by: Heinrich Schuchardt

    Cristian Ciocaltea
     

29 Oct, 2019

1 commit


27 Aug, 2019

1 commit


26 Aug, 2019

1 commit

  • RISC-V OpenSBI is an open-source implementation of the RISC-V Supervisor
    Binary Interface (SBI) specification. It is required by Linux and U-Boot
    running in supervisor mode. This patch adds support for booting via the
    OpenSBI FW_DYNAMIC firmware. It supports OpenSBI version 0.4 and higher.

    In this configuration, U-Boot SPL starts in machine mode. After loading
    OpenSBI and U-Boot proper, it will start OpenSBI. All necessary
    parameters are generated by U-Boot SPL and are passed to OpenSBI. U-Boot
    proper is started in supervisor mode by OpenSBI. Support for OpenSBI is
    enabled with CONFIG_SPL_OPENSBI. An additional configuration entry,
    CONFIG_SPL_OPENSBI_LOAD_ADDR, is used to specify the load address of the
    OpenSBI firmware binary. It is not used directly in U-Boot and instead
    is intended to make the value available to scripts such as FIT
    configuration generators.

    The header file include/opensbi.h is based on header files from the
    OpenSBI project. They are recent, as of commit bae54f764570 ("firmware:
    Add fw_dynamic firmware").

    Signed-off-by: Lukas Auer
    Reviewed-by: Bin Meng
    Tested-by: Bin Meng
    Reviewed-by: Anup Patel

    Lukas Auer
     

29 Jul, 2019

1 commit

  • Upcoming patches want to add decompression to use cases that are no
    longer directly related to booting. It makes sense to retain a single
    decompression routine, but it should no longer be in bootm.c (which is
    not compiled for all configurations). This patch moves
    bootm_decomp_image() to image.c and renames it to image_decomp() in
    preparation of those upcoming patches.

    Signed-off-by: Julius Werner
    Reviewed-by: Simon Goldschmidt
    [trini: Fix warning around handle_decomp_error being unused]
    Signed-off-by: Tom Rini

    Julius Werner
     

12 Jul, 2019

1 commit


11 May, 2019

1 commit


10 May, 2019

1 commit

  • There is no check for CONFIG_CRC32 so the #define in image.h does
    nothing. Remove it.

    Reported-by: Robert P. J. Day
    Signed-off-by: Chris Packham
    Reviewed-by: Stefano Babic
    Reviewed-by: Heiko Schocher

    Chris Packham
     

05 May, 2019

1 commit

  • If building with SPL_LOAD_FIT_FULL and FIT_SIGNATURE, but without
    SPL_FIT_SIGNATURE then the build fails with:

    common/built-in.o: In function `fit_image_verify_with_data':
    common/image-fit.c:1220: undefined reference to `fit_image_verify_required_sigs'
    common/image-fit.c:1244: undefined reference to `fit_image_check_sig'
    common/built-in.o: In function `fit_image_load':
    common/image-fit.c:1857: undefined reference to `fit_config_verify'

    Refactor so that host builds still depend on FIT_SIGNATURE, but target
    builds check FIT_SIGNATURE/SPL_FIT_SIGNATURE dependent on the build.

    Signed-off-by: Alex Kiernan
    Reviewed-by: Simon Glass

    Alex Kiernan
     

24 Apr, 2019

1 commit

  • According to Android image format [1], kernel image resides at 1 page
    offset from the boot image address. Grab the magic number from there
    and allow U-Boot to handle LZ4-compressed KNL binaries instead of
    hardcoding compression type to IH_COMP_NONE. Other compression types,
    if needed, can be added later.

    Tested on H3ULCB-KF using the image detailed in [2].

    [1] Excerpt from include/android_image.h
    +-----------------+
    | boot header | 1 page
    +-----------------+
    | kernel | n pages
    +-----------------+
    | ramdisk | m pages
    +-----------------+
    | second stage | o pages
    +-----------------+

    [2] => iminfo 4c000000
    ## Checking Image at 4c000000 ...
    Android image found
    kernel size: 85b9d1
    kernel address: 48080000
    ramdisk size: 54ddbc
    ramdisk addrress: 4a180000
    second size: 0
    second address: 48000800
    tags address: 48000100
    page size: 800
    os_version: 1200012a (ver: 0.9.0, level: 2018.10)
    name:
    cmdline: buildvariant=userdebug

    Signed-off-by: Eugeniu Rosca

    Eugeniu Rosca
     

17 Dec, 2018

1 commit

  • Commit a2b96ece5be146f4995d737f047e5bbb76079b8f breaks the enumeration
    of the Image Types. New image types can be appended, but they cannot be
    inserted in the list else backward compatibility is broken.

    This restores the images types as before 2018.11 and move i.MX8 related
    images at the end.

    Signed-off-by: Robert Berger
    Signed-off-by: Stefano Babic
    CC: Tom Rini

    Stefano Babic
     

03 Dec, 2018

2 commits

  • We add the support of the padding pss for rsa signature.
    This new padding is often recommended instead of pkcs-1.5.

    Signed-off-by: Philippe Reynes
    Reviewed-by: Simon Glass

    Philippe Reynes
     
  • The rsa signature use a padding algorithm. By default, we use the
    padding pkcs-1.5. In order to add some new padding algorithm, we
    add a padding framework to manage several padding algorithm.
    The choice of the padding is done in the file .its.

    Signed-off-by: Philippe Reynes
    Reviewed-by: Simon Glass

    Philippe Reynes
     

29 Nov, 2018

1 commit


22 Oct, 2018

1 commit

  • i.MX8/8X bootable image type is container type.
    The bootable image, containers a container set which supports two
    container. The 1st container is for SECO firmware, the 2nd container
    needs to include scfw, m4_0/1 image, ACore images per your requirement.

    Signed-off-by: Peng Fan

    Peng Fan
     

11 Jul, 2018

1 commit


19 Jun, 2018

1 commit

  • Add option to the booti_setup() which indicates to it that the caller
    requires the image to be relocated to the beginning of the RAM and
    that the information whether the image can be located anywhere in RAM
    at 2 MiB aligned boundary or not is to be ignored. This is useful ie.
    in case the Image is wrapped in another envelope, ie. fitImage and not
    relocating it but moving it would corrupt the envelope.

    Signed-off-by: Marek Vasut
    Cc: Bin Chen
    Cc: Masahiro Yamada
    Cc: Tom Rini
    Reviewed-By: Bin Chen

    Marek Vasut
     

27 May, 2018

1 commit


24 May, 2018

2 commits


11 May, 2018

2 commits

  • Xilinx changes for v2018.07

    microblaze:
    - Align defconfig

    zynq:
    - Rework fpga initialization and cpuinfo handling

    zynqmp:
    - Add ZynqMP R5 support
    - Wire and enable watchdog on zcu100-revC
    - Setup MMU map for DDR at run time
    - Show board info based on DT and cleanup IDENT_STRING

    zynqmp tools:
    - Add read partition support
    - Add initial support for Xilinx bif format for boot.bin generation

    mmc:
    - Fix get_timer usage on 64bit cpus
    - Add support for SD3.0 UHS mode

    nand-zynq:
    - Add support for 16bit buswidth
    - Use address cycles from onfi params

    scsi:
    - convert ceva sata to UCLASS_AHCI

    timer:
    - Add Cadence TTC for ZynqMP r5

    watchdog:
    - Minor cadence driver cleanup

    Tom Rini
     
  • The officially described way to generate boot.bin files for ZynqMP is to
    describe the contents of the target binary using a file of the "bif"
    format. This file then links to other files that all get packed into a
    bootable image.

    This patch adds support to read such a .bif file and generate a respective
    ZynqMP boot.bin file that can include the normal image and pmu files, but
    also supports image partitions now. This makes it a handy replacement for
    the proprietary "bootgen" utility that is currently used to generate
    boot.bin files with FSBL.

    Signed-off-by: Alexander Graf
    Signed-off-by: Michal Simek

    Alexander Graf
     

09 May, 2018

1 commit


07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

07 Apr, 2018

1 commit

  • SPL ATF support requires to have firmware property which should be also
    listed by mkimage -l when images is created.

    The patch is also using this macro in spl_fit to match keyword.

    When image is created:
    Default Configuration: 'config'
    Configuration 0 (config)
    Description: ATF with full u-boot
    Kernel: unavailable
    Firmware: atf
    FDT: dtb

    Signed-off-by: Michal Simek
    Reviewed-by: Simon Glass
    Reviewed-by: Jun Nie
    Reviewed-by: Philipp Tomsich

    Michal Simek
     

01 Apr, 2018

1 commit


20 Mar, 2018

2 commits

  • This patch adds a new type IH_OS_TEE. This new OS type will be used for
    chain-loading to Linux via a TEE.

    With this patch in-place you can generate a bootable OPTEE image like this:

    mkimage -A arm -T kernel -O tee -C none -d tee.bin uTee.optee

    where "tee.bin" is the input binary prefixed with an OPTEE header and
    uTee.optee is the output prefixed with a u-boot wrapper header.

    This image type "-T kernel -O tee" is differentiated from the existing
    IH_TYPE_TEE "-T tee" in that the IH_TYPE is installed by u-boot (flow
    control returns to u-boot) whereas for the new IH_OS_TEE control passes to
    the OPTEE firmware and the firmware chainloads onto Linux.

    Andrew Davis gave the following ASCII diagram:

    IH_OS_TEE: (mkimage -T kernel -O tee)
    Non-Secure Secure

    BootROM
    |
    -------------
    |
    v
    SPL
    |
    v
    U-Boot ------>


    Suggested-by: Andrew F. Davis
    Cc: Harinarayan Bhatta
    Cc: Andrew F. Davis
    Cc: Tom Rini
    Cc: Kever Yang
    Cc: Philipp Tomsich
    Cc: Peng Fan
    Link: http://mrvan.github.io/optee-imx6ul

    Bryan O'Donoghue
     
  • STM32MP157 bootrom needs a specific header for first boot stage.
    This patch adds support of this header in mkimage.

    Signed-off-by: Patrick Delaunay

    Patrick Delaunay
     

19 Mar, 2018

1 commit

  • U-boot proper signature is not verified by SPL on most platforms
    even config SPL_FIT_SIGNATURE is enabled. Only fsl-layerscape
    platform support secure boot in platform specific code. So
    verified boot cannot be achieved if u-boot proper is loaded by
    SPL.

    This patch add signature verification to u-boot proper images
    when loading FIT image in SPL. It is tested on Allwinner bananapi
    zero board with H2+ SoC.

    Signed-off-by: Jun Nie

    Jun Nie
     

05 Mar, 2018

1 commit

  • Thomas reported U-Boot failed to build host tools if libfdt-devel
    package is installed because tools include libfdt headers from
    /usr/include/ instead of using internal ones.

    This commit moves the header code:
    include/libfdt.h -> include/linux/libfdt.h
    include/libfdt_env.h -> include/linux/libfdt_env.h

    and replaces include directives:
    #include -> #include
    #include -> #include

    Reported-by: Thomas Petazzoni
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

08 Feb, 2018

2 commits

  • Follow bootz's pattern by moving the booti_setup to arch/arm/lib.
    This allows to use booti_setup in other paths, e.g booting
    an Android image containing Image format.

    Note that kernel relocation is move out of booti_setup and it is the
    caller's responsibility to do it and allows them do it differently. say,
    cmd/booti.c just do a manually, while in the bootm path, we can use
    bootm_load_os(with some changes).

    Signed-off-by: Bin Chen
    Reviewed-by: Tom Rini

    Bin Chen
     
  • The second area of android image was intended to put a 2nd stage
    bootloader but in practice were rarely used (in my knowledge).

    An proposal was made to the AOSP to (re)use the second area as the dtb[1],
    This patch itself doesn't depend on that proposal being accepted but it won't
    be that helpful as well if that proposal won't be accepted. But don't do
    any harm as well.

    [1] https://android-review.googlesource.com/#/c/417447/
    Signed-off-by: Bin Chen
    Reviewed-by: Tom Rini
    Reviewed-by: Kever Yang

    Bin Chen