24 May, 2019

2 commits

  • The lib provided ql-tipc communication channel with
    Trusty OS.
    Also the AVB, Keymaster, hwcrypto and SecureStorage service
    tipc client implement in this lib.

    Change-Id: I0ab1ec9ee1b6f272b960c2e944008283c2c9249a
    Signed-off-by: Haoran.Wang
    (cherry picked from commit 8fb370dd80fbb293b58115d2e7fc4970813773c7)
    (cherry picked from commit 0ccdd527a794c2b450658980361a7857ce7495c9)

    Haoran.Wang
     
  • Porting the android AVB lib from imx u-boot v2018.03. Since 2019 u-boot
    has added latest AVB library, try to reuse it.

    Signed-off-by: Ye Li
    (cherry picked from commit 2105662ada738a271e12a81d775134a5821dc38f)
    (cherry picked from commit f7291d86c4183ce2e299ad271aa5618c71507ffc)

    Ye Li
     

09 Feb, 2019

1 commit

  • The board_r init function was complaining that we are looping through
    an array, calling all our tiny init stubs sequentially via indirect
    function calls (which can't be speculated, so they are slow).

    The solution to that is pretty easy though. All we need to do is inline
    the function that loops through the functions and the compiler will
    automatically convert almost all indirect calls into direct inlined code.

    With this patch, the overall code size drops (by 40 bytes on riscv64)
    and boot time should become measurably faster for every target.

    Signed-off-by: Alexander Graf

    Alexander Graf
     

17 Jan, 2019

2 commits

  • This fixes CVE-2018-18439 ("insufficient boundary checks in network
    image boot") by using lmb to check for a valid range to store
    received blocks.

    Signed-off-by: Simon Goldschmidt
    Acked-by: Joe Hershberger
    [trini: Always build lib/lmb.o on LMB and lib/fdtdec.o on OF_LIBFDT]
    Signed-off-by: Tom Rini

    Simon Goldschmidt
     
  • boot_fdt_add_mem_rsv_regions() adds reserved memory sections to an lmb
    struct. Currently, it only parses regions described by /memreserve/
    entries.

    Extend this to the more commonly used scheme of the "reserved-memory"
    node.

    Signed-off-by: Simon Goldschmidt
    Reviewed-by: Simon Glass

    Simon Goldschmidt
     

16 Jan, 2019

1 commit

  • Add the dollar_complete() function to auto-complete arguments starting
    with a '$' and use it in the cmd_auto_complete() path such that all
    args starting with a $ can be auto-completed based on the available env
    vars.

    Signed-off-by: Boris Brezillon
    [trini: Fix some linking problems]
    Signed-off-by: Tom Rini

    Boris Brezillon
     

09 Dec, 2018

1 commit

  • The CRC16-CCITT checksum function is useful for space-constrained
    applications (such as obtaining a checksum across a 2KBit or 4KBit
    EEPROM) in boot applications. It has not been accessible from boot
    scripts until now (due to not having a dedicated command and not being
    supported by the hash infrstructure) limiting its applicability
    outside of custom commands.

    This adds the CRC16-CCITT (poly 0x1021, init 0x0) algorithm to the
    list of available hashes and adds a new crc16_ccitt_wd_buf() to make
    this possible.

    Signed-off-by: Philipp Tomsich
    [trini: Fix building crc16.o for SPL/TPL]
    Signed-off-by: Tom Rini

    Philipp Tomsich
     

03 Dec, 2018

1 commit


21 Nov, 2018

1 commit


09 Oct, 2018

1 commit


24 Sep, 2018

2 commits


19 Jun, 2018

1 commit


13 Jun, 2018

1 commit

  • Often during debugging session it's very interesting to see
    what data we were dealing with. For example what we write or read
    to/from memory or peripherals.

    This change introduces functions that allow to dump binary
    data with one simple function invocation like:
    ------------------->8----------------
    print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, buf, len);
    ------------------->8----------------

    which gives us the following:
    ------------------->8----------------
    00000000: f2 b7 c9 88 62 61 75 64 72 61 74 65 3d 31 31 35 ....baudrate=115
    00000010: 32 30 30 00 62 6f 6f 74 61 72 67 73 3d 63 6f 6e 200.bootargs=con
    00000020: 73 6f 6c 65 3d 74 74 79 53 33 2c 31 31 35 32 30 sole=ttyS3,11520
    00000030: 30 6e 38 00 62 6f 6f 74 64 65 6c 61 79 3d 33 00 0n8.bootdelay=3.
    00000040: 62 6f 6f 74 66 69 6c 65 3d 75 49 6d 61 67 65 00 bootfile=uImage.
    00000050: 66 64 74 63 6f 6e 74 72 6f 6c 61 64 64 72 3d 39 fdtcontroladdr=9
    00000060: 66 66 62 31 62 61 30 00 6c 6f 61 64 61 64 64 72 ffb1ba0.loadaddr
    00000070: 3d 30 78 38 32 30 30 30 30 30 30 00 73 74 64 65 =0x82000000.stde
    00000080: 72 72 3d 73 65 72 69 61 6c 30 40 65 30 30 32 32 rr=serial0@e0022
    00000090: 30 30 30 00 73 74 64 69 6e 3d 73 65 72 69 61 6c 000.stdin=serial
    000000a0: 30 40 65 30 30 32 32 30 30 30 00 73 74 64 6f 75 0@e0022000.stdou
    000000b0: 74 3d 73 65 72 69 61 6c 30 40 65 30 30 32 32 30 t=serial0@e00220
    000000c0: 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00..............
    ...
    ------------------->8----------------

    Source of hexdump.c was copied from Linux kernel v4.7-rc2.

    Signed-off-by: Alexey Brodkin
    Cc: Anatolij Gustschin
    Cc: Mario Six
    Cc: Simon Glass
    Cc: Tom Rini
    Cc: Stefan Roese

    Alexey Brodkin
     

30 May, 2018

1 commit

  • Introduce CONFIG_IMAGE_SPARSE and CONFIG_CMD_MMC_SWRITE so the "mmc
    swrite" command is separated from the fastboot code.

    Move image-sparse from common to lib so it's clear it's library code.

    Rename CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE to CONFIG_IMAGE_SPARSE_FILLBUF_SIZE
    and migrate it to Kconfig.

    Signed-off-by: Alex Kiernan
    Acked-by: Jassi Brar
    Reviewed-by: Simon Glass

    Alex Kiernan
     

26 May, 2018

3 commits

  • Choice between v1 and v2 compliant functions is done with the
    configuration.

    Create the various files that will receive TPMv2-only code on the same
    scheme as for the TPMv1 code.

    Signed-off-by: Miquel Raynal
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Miquel Raynal
     
  • There are no changes in this commit but a new organization of the code
    as follow.

    * cmd/ directory:
    > move existing code from cmd/tpm.c in cmd/tpm-common.c
    > move specific code in cmd/tpm-v1.c
    > create a specific header file with generic definitions for
    commands only called cmd/tpm-user-utils.h

    * lib/ directory:
    > move existing code from lib/tpm.c in lib/tpm-common.c
    > move specific code in lib/tpm-v1.c
    > create a specific header file with generic definitions for
    the library itself called lib/tpm-utils.h

    * include/ directory:
    > move existing code from include/tpm.h in include/tpm-common.h
    > move specific code in include/tpm-v1.h

    Code designated as 'common' is compiled if TPM are used. Code designated
    as 'specific' is compiled only if the right specification has been
    selected.

    All files include tpm-common.h.
    Files in cmd/ include tpm-user-utils.h.
    Files in lib/ include tpm-utils.h.
    Depending on the specification, files may include either (not both)
    tpm-v1.h or tpm-v2.h.

    Signed-off-by: Miquel Raynal
    Reviewed-by: Tom Rini
    [trini: Fix a few more cases of tpm.h -> tpm-v1.h, some Kconfig logic]
    Signed-off-by: Tom Rini

    Miquel Raynal
     
  • Because both major revisions are not compatible at all, let's make them
    mutually exclusive in Kconfig. This way we will be sure, when using a
    command or a library function that it is supported by the right
    revision.

    Current drivers are currently prefixed by "tpm_", we will prefix TPMv2.x
    files by "tpm2_" to make the distinction without moving everything.

    The Kconfig menu about TPM drivers is now divided into two sections, one
    for each specification. Compliant drivers with one specification will
    only show up if this specification _only_ has been selected, otherwise a
    comment is displayed.

    Once a driver is selected by the user, it selects automatically a
    boolean value, that is needed in order to activate the TPM commands.
    Selecting the TPM commands will automatically select the right
    command/library files.

    Signed-off-by: Miquel Raynal
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini
    [trini: Rework deps as TPM_V1 and TPM_V2 depend on TPM,
    drop TPM_DRIVER_SELECTED]
    Signed-off-by: Tom Rini

    Miquel Raynal
     

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
     

29 Apr, 2018

1 commit

  • When SPL serial is disabled, callers who need sprintf or strtoul fail
    because their inclusion is guarded by CONFIG_SPL_SERIAL_SUPPORT/
    CONFIG_TPL_SERIAL_SUPPORT.

    Split printf, sprintf and strto into their own entries and then select
    all of them if SERIAL_SUPPORT is enabled to match the current behaviour.

    Include panic.o unconditionally as it can be called from anywhere which
    uses BUG_ON().

    Signed-off-by: Alex Kiernan

    Alex Kiernan
     

20 Mar, 2018

1 commit

  • This patch adds code to lib to enable sharing of useful OPTEE code between
    board-ports and architectures. The code on lib/optee/optee.c comes from the
    TI omap2 port. Eventually the OMAP2 code will be patched to include the
    shared code. The intention here is to add more useful OPTEE specific code
    as more functionality gets added.

    Signed-off-by: Bryan O'Donoghue
    Cc: Harinarayan Bhatta
    Cc: Andrew F. Davis
    Cc: Tom Rini
    Cc: Kever Yang
    Cc: Philipp Tomsich
    Cc: Peng Fan
    Tested-by: Peng Fan

    Bryan O'Donoghue
     

23 Jan, 2018

1 commit

  • This patch provides
    * a uclass for EFI drivers
    * a EFI driver for block devices

    For each EFI driver the uclass
    * creates a handle
    * adds the driver binding protocol

    The uclass provides the bind, start, and stop entry points for the driver
    binding protocol.

    In bind() and stop() it checks if the controller implements the protocol
    supported by the EFI driver. In the start() function it calls the bind()
    function of the EFI driver. In the stop() function it destroys the child
    controllers.

    The EFI block driver binds to controllers implementing the block io
    protocol.

    When the bind function of the EFI block driver is called it creates a
    new U-Boot block device. It installs child handles for all partitions and
    installs the simple file protocol on these.

    The read and write functions of the EFI block driver delegate calls to the
    controller that it is bound to.

    A usage example is as following:

    U-Boot loads the iPXE snp.efi executable. iPXE connects an iSCSI drive and
    exposes a handle with the block IO protocol. It calls ConnectController.

    Now the EFI block driver installs the partitions with the simple file
    protocol.

    iPXE uses the simple file protocol to load Grub or the Linux Kernel.

    Signed-off-by: Heinrich Schuchardt
    [agraf: add comment on calloc len]
    Signed-off-by: Alexander Graf

    Heinrich Schuchardt
     

06 Oct, 2017

1 commit


03 Oct, 2017

1 commit


19 Sep, 2017

1 commit

  • A testing framework for the EFI API is provided.
    It can be executed with the 'bootefi selftest' command.

    It is coded in a way that at a later stage we may turn it
    into a standalone EFI application. The current build system
    does not allow this yet.

    All tests use a driver model and are run in three phases:
    setup, execute, teardown.

    A test may be setup and executed at boottime,
    it may be setup at boottime and executed at runtime,
    or it may be setup and executed at runtime.

    After executing all tests the system is reset.

    Signed-off-by: Heinrich Schuchardt
    Signed-off-by: Alexander Graf

    Heinrich Schuchardt
     

15 Sep, 2017

1 commit


13 Sep, 2017

1 commit


11 Sep, 2017

1 commit


13 Aug, 2017

1 commit


01 Jun, 2017

1 commit


22 May, 2017

1 commit

  • Commit 94e3c8c4fd7b ("crypto/fsl - Add progressive hashing support
    using hardware acceleration.") created entries for CONFIG_SHA1,
    CONFIG_SHA256, CONFIG_SHA_HW_ACCEL, and CONFIG_SHA_PROG_HW_ACCEL.
    However, no defconfig has migrated to it. Complete the move by first
    adding additional logic to various Kconfig files to select this when
    required and then use the moveconfig tool. In many cases we can select
    these because they are required to implement other drivers. We also
    correct how we include the various hashing algorithms in SPL.

    This commit was generated as follows (after Kconfig additions):

    [1] tools/moveconfig.py -y SHA1 SHA256 SHA_HW_ACCEL
    [2] tools/moveconfig.py -y SHA_PROG_HW_ACCEL

    Note:
    We cannot move SHA_HW_ACCEL and SHA_PROG_HW_ACCEL simultaneously
    because there is dependency between them.

    Cc: Poonam Aggrwal
    Cc: Naveen Burmi
    Cc: Po Liu
    Cc: Shengzhou Liu
    Cc: Priyanka Jain
    Cc: Shaohui Xie
    Cc: Chunhe Lan
    Cc: Chander Kashyap
    Cc: Steve Rae
    Cc: Dirk Eibach
    Cc: Feng Li
    Cc: Alison Wang
    Cc: Sumit Garg
    Cc: Mingkai Hu
    Cc: York Sun
    Cc: Prabhakar Kushwaha
    Cc: Jaehoon Chung
    Cc: Akshay Saraswat
    Cc: Heiko Schocher
    Cc: Jagan Teki
    Signed-off-by: Tom Rini
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Rini

    Tom Rini
     

19 Oct, 2016

2 commits


08 Oct, 2016

1 commit

  • By default saveenv option is not supported for SPL. This patch
    enable the support for save environment variable for SPL build.

    Enable save environment support in SPL after setenv. By default
    the saveenv option is not provided in SPL, but some boards need
    this support in 'Falcon' boot, where SPL need to boot from
    different images based on environment variable set by OS. For
    example OS may set "reboot_image" environment variable to
    "recovery" inorder to boot recovery image by SPL. The SPL read
    "reboot_image" and act accordingly and change the reboot_image
    to default mode using setenv and save the environemnt.

    Signed-off-by: Ravi Babu
    Reviewed-by: Simon Glass

    change in v1:
    - dropped SUPPORT, use CONFIG_SPL_SAVEENV
    - updates the comments in mmc_private.h

    B, Ravi
     

17 Sep, 2016

1 commit

  • At present TPL uses the same options as SPL support. In a few cases the board
    config enables or disables the SPL options depending on whether
    CONFIG_TPL_BUILD is defined.

    With the move to Kconfig, options are determined for the whole build and
    (without a hack like an #undef in a header file) cannot be controlled in this
    way.

    Create new TPL options for these and update users. This will allow Kconfig
    conversion to proceed for these boards.

    Signed-off-by: Simon Glass

    Simon Glass
     

15 Jul, 2016

1 commit


13 Jun, 2016

1 commit

  • This allows a board to configure verified boot within the SPL using
    a FIT or FIT with external data. It also allows the SPL to perform
    signature verification without needing relocation.

    The board configuration will need to add the following feature defines:
    CONFIG_SPL_CRYPTO_SUPPORT
    CONFIG_SPL_HASH_SUPPORT
    CONFIG_SPL_SHA256

    In this example, SHA256 is the only selected hashing algorithm.

    And the following booleans:
    CONFIG_SPL=y
    CONFIG_SPL_DM=y
    CONFIG_SPL_LOAD_FIT=y
    CONFIG_SPL_FIT=y
    CONFIG_SPL_OF_CONTROL=y
    CONFIG_SPL_OF_LIBFDT=y
    CONFIG_SPL_FIT_SIGNATURE=y

    Signed-off-by: Teddy Reed
    Acked-by: Simon Glass
    Acked-by: Andreas Dannenberg
    Acked-by: Sumit Garg

    Teddy Reed
     

07 Jun, 2016

1 commit

  • When setting up a DDR controller it is useful to be able to display
    frequencies in a readable form. Make the strmhz() function available in
    SPL builds provided there is full vsprintf available.

    Reviewed-by: Tony O'Brien
    Reviewed-by: Simon Glass
    Signed-off-by: Chris Packham

    Chris Packham
     

16 Mar, 2016

1 commit

  • Now that we have all the bits and pieces ready for EFI payload loading
    support, hook them up in Makefiles and KConfigs so that we can build.

    Signed-off-by: Alexander Graf
    Reviewed-by: Simon Glass
    Tested-by: Simon Glass
    [trini: Enable only when we of OF_LIBFDT, disable on kwb and colibri_pxa270]
    Signed-off-by: Tom Rini

    Alexander Graf
     

15 Mar, 2016

1 commit

  • Add an option to enable libfdt in SPL. This can be useful when decoding
    FIT files in SPL.

    We need to make sure this option is not enabled in SPL by this change.
    Also this option needs to be enabled in host builds. Si add a new
    IMAGE_USE_LIBFDT #define which can be used in files that are built on the
    host but must also build for U-Boot and SPL.

    Signed-off-by: Simon Glass

    Simon Glass