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
     

30 Mar, 2018

1 commit

  • The kwbimage format is reading beyond its header structure if it
    misdetects a Xilinx Zynq image and tries to read it. Fix it by
    sanity checking that the header we want to read fits inside our
    file size.

    Signed-off-by: Alexander Graf
    Tested-by: Michal Simek
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Alexander Graf
     

23 Feb, 2018

1 commit


12 Jul, 2017

1 commit

  • The verify_header callback in kwbimage.c only verifies v0 headers checksum.
    Running 'mkimage -l' on a v1 image gives the following misleading output:

    GP Header: Size ae000000 LoadAddr 34160600

    Implement support for v1 headers. For that, factor out the header checksum code
    to a separate main_hdr_checksum_ok() routine. This routine relies on the fact
    that the checksum field offset is the same in both v0 and v1 headers. With this
    patch applied 'mkimage -l' correctly identifies the image:

    Image Type: MVEBU Boot from sdio Image
    Image version:1
    Data Size: 398904 Bytes = 389.55 KiB = 0.38 MiB
    Load Address: 007fffc0
    Entry Point: 00800000

    Signed-off-by: Baruch Siach
    Signed-off-by: Stefan Roese

    Baruch Siach
     

10 Jun, 2017

1 commit


31 May, 2017

1 commit

  • image_version_file()'s only use is to return the version number of the
    specified image, and it's only called by kwbimage_generate(). This
    version function mallocs "image_cfg" and reads the contents of the image
    into that buffer. Before return to its caller it frees the buffer.

    After extracting the version, kwb_image_generate() tries to calculate
    the header size by calling image_headersz_v1(). This function now
    accesses "image_cfg", which has already been freed.

    Since image_version_file() is only used by a single function, inline it
    into kwbimage_generate() and only free the buffer after it is no longer
    needed. This also improves code readability since the code is mostly
    equal to kwbimage_set_header().

    Signed-off-by: Patrick Wildt
    Signed-off-by: Stefan Roese

    Patrick Wildt
     

12 May, 2017

1 commit

  • The rsa_st struct has been made opaque in 1.1.x, add forward compatible
    code to access the n, e, d members of rsa_struct.

    EVP_MD_CTX_cleanup has been removed in 1.1.x and EVP_MD_CTX_reset should be
    called to reinitialise an already created structure.

    Signed-off-by: Jelle van der Waa

    Jelle van der Waa
     

17 Feb, 2017

1 commit


01 Feb, 2017

8 commits

  • The patch implements secure booting for the mvebu architecture.

    This includes:
    - The addition of secure headers and all needed signatures and keys in
    mkimage
    - Commands capable of writing the board's efuses to both write the
    needed cryptographic data and enable the secure booting mechanism
    - The creation of convenience text files containing the necessary
    commands to write the efuses

    The KAK and CSK keys are expected to reside in the files kwb_kak.key and
    kwb_csk.key (OpenSSL 2048 bit private keys) in the top-level directory.

    Signed-off-by: Reinhard Pfau
    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Reviewed-by: Simon Glass
    Signed-off-by: Stefan Roese

    Mario Six
     
  • The function image_create_config_parse_oneline is pretty complex, and
    since more parameters will be added to support secure booting, we
    refactor the function to make it more readable.

    Also, when a line contained just a keyword without any parameters,
    strtok_r returned NULL, which was then indiscriminately fed into atoi,
    causing a segfault. To correct this, we add a NULL check before feeding
    the extracted token to atoi, and print an error message in case the
    token is NULL.

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     
  • In preparation of adding the creation of secure headers, we factor the
    add_binary_header_v1 function out of the image_create_v1 function.

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     
  • The parameter 'params' of the image_headersz_v1 function is never used
    by the function.

    Hence, remove it.

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     
  • This patch reduces the scope of some variables.

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     
  • Arithmetic with void pointers, e.g. a - b where both a and b are void
    pointers, is undefined in the C standard. Since we are operating with
    byte data here, we switch the void pointers to uint8_t pointers, and add
    the necessary casts.

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     
  • Fix some style violations:

    - nine instances of missing blank lines after declarations
    - one overly long line
    - one split string (which also rewords an error message more concisely)
    - two superfluous else

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     
  • To enable secure boot, we need to jump back into the BootROM to continue
    the SoC's boot process instead of letting the SPL load and run the main
    U-Boot image.

    But, since the u-boot-spl.img (including the 64 byte header) is loaded
    by the SoC as the main image, we need to compensate for the header
    length to get a correct entry point.

    Thus, we subtract the header size from the destination address, so that
    the execution address points at the actual entry point of the image.

    The current boards ignore both parameters anyway, so this change shouldn't
    concern them.

    Signed-off-by: Mario Six
    Reviewed-by: Stefan Roese
    Signed-off-by: Stefan Roese

    Mario Six
     

01 Dec, 2016

2 commits

  • Offset 0x1 in the generated kwb image file is a set of flags, bit 0
    enables debug output from the BootROM firmware. Allow a DEBUG option in
    the kwb configuration to request debug output from the BootROM firmware.

    Signed-off-by: Chris Packham
    Signed-off-by: Stefan Roese

    Chris Packham
     
  • Offset 0x18 in some Marvell datasheets this field is redacted as
    "reserved". This offset is actually a set of options and bits 2:0 allow
    the selection of the UART baudrate.

    Allow a BAUDRATE option to set the UART baudrate for any messages coming
    from the BootROM firmware.

    Signed-off-by: Chris Packham
    Signed-off-by: Stefan Roese

    Chris Packham
     

29 Nov, 2015

3 commits

  • Fix computation of haeder size and binary header size.
    Size of opt header and some 32bit values were not taken into account. This could
    result in invalid boot images (due to the wrong binary header size, the image could
    claim to have another extension header after the binary extension although there
    is none).

    Use "uint32_t" instead of "unsigned int" for header size computation.

    Signed-off-by: Reinhard Pfau
    Reviewed-by: Stefan Roese
    Cc: Luka Perkov

    Reinhard Pfau
     
  • KWB image header values are in little endian (LE).
    So adding appropriate cpu_to_leXX() calls to allow building those images
    on BE hosts, too.

    Signed-off-by: Reinhard Pfau
    Reviewed-by: Stefan Roese

    Reinhard Pfau
     
  • With the dtb added to the main U-Boot image, it can happen, that
    the resulting image is not 4-byte aligned. As the dtb tends to
    be unaligned. But the image needs to be 4-byte aligned. At least the
    Marvell hdrparser tool complains if its unaligned. By returning 1 here
    in kwbimage_generate(), called via tparams->vrec_header() in mkimage.c,
    mkimage will automatically pad the resulting image to a 4-byte size
    if necessary.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Dirk Eibach

    Stefan Roese
     

18 Nov, 2015

1 commit

  • The binary header ends with one lword, defining if another header
    follows this one. This additions 4 bytes need to be taken into
    account in the generation of the header size. And the complete
    4 bytes at the end of this binary header need to get cleared.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Kevin Smith

    Stefan Roese
     

21 Oct, 2015

1 commit


01 Oct, 2015

1 commit

  • Currently, kwboot only allows dynamic UART boot mode patching for SoCs
    with header version 0 (Orion, Kirkwood). This patch now enables this "-p"
    feature also for SoCs with header version 1 (Armada XP / 38x etc). With
    this its possible now to use the UART boot mode without on images that
    are generated for other boot devices, like SPI. So no need to change
    BOOT_FROM to "uart" for UART xmodem booting any more.

    Signed-off-by: Stefan Roese
    Tested-by: Kevin Smith
    Cc: Luka Perkov
    Cc: Dirk Eibach

    Stefan Roese
     

24 Jul, 2015

2 commits


14 Jun, 2015

1 commit

  • If defined, the macro CONFIG_SYS_SPI_U_BOOT_OFFS allows a board
    to specify the offset of the payload image into the kwb image
    file. This value was being used to locate the image, but was not
    used in the "header size" field of the main header. Move the
    use of this macro into the function that returns the header size
    so that the same value is used in all places.

    Signed-off-by: Kevin Smith
    Tested-by: Stefan Roese

    Kevin Smith
     

06 Mar, 2015

1 commit


07 Feb, 2015

2 commits


30 Jan, 2015

1 commit


11 Jan, 2015

2 commits

  • The two error checks for image_boot_mode_id and image_nand_ecc_mode_id where
    wrong and would never fail, fix that!

    This was detected by Apple's clang compiler:
    ---8< 0 is always false [-Wtautological-compare]
    if (el->bootfrom < 0) {
    ~~~~~~~~~~~~ ^ ~
    tools/kwbimage.c:571:23: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
    if (el->nandeccmode < 0) {
    ~~~~~~~~~~~~~~~ ^ ~
    2 warnings generated.
    --->8---

    Signed-off-by: Andreas Bießmann
    Acked-By: Jeroen Hofstee

    Andreas Bießmann
     
  • When building with my toolchain (4.8.2):
    CROSS_COMPILE=/home/lukma/work/ptxdist/toolchains/arm/OSELAS.Toolchain-2013.12.0/arm-v7a-linux-gnueabi/gcc-4.8.2-glibc-2.18-binutils-2.24-kernel-3.12-sanitized/bin/arm-v7a-linux-gnueabi-

    I see following WARNING:
    tools/kwbimage.c: In function "kwbimage_set_header":
    tools/kwbimage.c:803:8: warning: "headersz" may be used uninitialized in this function [-Wmaybe-uninitialized]
    memcpy(ptr, image, headersz);
    ^
    This fix aims to suppress it.

    Signed-off-by: Lukasz Majewski
    Acked-by: Stefan Roese
    Acked-by: Heiko Schocher

    Łukasz Majewski
     

05 Nov, 2014

1 commit

  • This patch fix the kwimage tools for version 0 fileformat used for kirkwood
    Tested on sheevaplug

    Signed-off-by: Gerald Kerma
    Tested-by: Stefan Roese
    Reviewed-by: Stefan Roese
    Acked-By: Prafulla Wadaskar

    Gerald Kerma
     

31 Oct, 2014

2 commits

  • This patch fixes a compilation warning of kwbimage.c:

    tools/kwbimage.c: In function ‘kwbimage_set_header’:
    tools/kwbimage.c:784:8: warning: ‘headersz’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    memcpy(ptr, image, headersz);
    ^
    Instead of using multiple if statements, use a switch statement with
    a default entry. And return with error if an unsupported version
    is configured in the cfg file.

    Signed-off-by: Stefan Roese
    Acked-By: Wolfgang Denk

    Stefan Roese
     
  • kwbimage uses get_current_dir_name(3) which is a gnu extension and not
    available on darwin host. Fix this by converting to portable getcwd(3)
    function.

    This patch fixes the following error:
    ---88---

    Signed-off-by: Andreas Bießmann
    Cc: Stefan Roese
    Acked-by: Stefan Roese
    [agust: fixed getcwd() return warning]
    Signed-off-by: Anatolij Gustschin

    Andreas Bießmann
     

23 Oct, 2014

1 commit

  • This patch integrates the Barebox version of this kwbimage.c file into
    U-Boot. As this version supports the image version 1 type for the
    Armada XP / 370 SoCs.

    It was easier to integrate the existing and known to be working Barebox
    source than to update the current U-Boot version to support this
    v1 image header format. Now all Marvell MVEBU SoCs are supported:

    Image type 0: Kirkwood & Dove
    Image type 1: Armada 370 & Armada XP

    Please note that the current v1 support has this restuction (same as
    has Barebox version):

    Not implemented: support for the register headers and secure headers
    in v1 images

    Tested on Marvell DB-78460-BP eval board.

    Signed-off-by: Stefan Roese
    Tested-by: Luka Perkov

    Stefan Roese
     

13 Dec, 2013

1 commit

  • In order to avoid duplicating code and keep only one point of modification,
    the functions, structs and defines useful for "dumpimage" were moved from
    "mkimage" to a common module called "imagetool".

    This modification also weakens the coupling between image types (FIT, IMX, MXS,
    and so on) and image tools (mkimage and dumpimage). Any tool may initialize the
    "imagetool" through register_image_tool() function, while the image types
    register themselves within an image tool using the register_image_type()
    function:

    +---------------+
    +------| fit_image |
    +--------------+ +-----------+ | +---------------+
    | mkimage |--------> | | | |
    Signed-off-by: Simon Glass

    Guilherme Maciel Ferreira
     

17 Aug, 2013

1 commit

  • Commit 669dfc2e adds libfdt_env.h to HOSTCPPFLAGS. It causes stdio.h
    to be included before _GNU_SOURCE is defined in C files. On some old hosts
    some prototypes are protected by #ifdef __USE_GNU, which is set when
    _GNU_SOURCE is defined.

    Signed-off-by: York Sun
    Acked-by: Simon Glass

    York Sun
     

24 Jul, 2013

1 commit