09 Jul, 2019

1 commit

  • The motivation is to use the UBI atomic volume rename functionality to
    allow double copy software updates on UBI. To that end the SPL is
    configured to always load the same volume name (e.g. "u-boot"),
    whereas a software updater always installs into the secondary volume
    "u-boot_r". After successful installation, these two volume names are
    switched.

    This extension is protected by #ifdefs as it will somewhat slow down
    loading of volumes by id. This is because the code needs to disable
    the optimization of ignoring all volume ids which are not
    to-be-loaded, since these can only be resolved after attaching.

    This adds two vtbl related functions from Linux, which are taken from
    the same kernel version as the current main U-Boot UBI code (Linux 4.2
    64291f7db5bd8).

    Signed-off-by: Hamish Guthrie
    Signed-off-by: Markus Klotzbuecher
    Reviewed-by: Heiko Schocher
    Cc: Kyungmin Park

    Hamish Guthrie
     

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 multiple licenses (in
    these cases, dual license) declared in the SPDX-License-Identifier tag.
    In this case we change from listing "LICENSE-A LICENSE-B" or "LICENSE-A
    or LICENSE-B" or "(LICENSE-A OR LICENSE-B)" to "LICENSE-A OR LICENSE-B"
    as per the Linux Kernel style document. Note that parenthesis are
    allowed so when they were used before we continue to use them.

    Reviewed-by: Fabio Estevam
    Signed-off-by: Tom Rini

    Tom Rini
     

22 Jul, 2016

1 commit

  • Booting a payload out of NAND FLASH from the SPL is a crux today, as
    it requires hard partioned FLASH. Not a brilliant idea with the
    reliability of todays NAND FLASH chips.

    The upstream UBI + UBI fastmap implementation which is about to
    brought to u-boot is too heavy weight for SPLs as it provides way more
    functionality than needed for a SPL and does not even fit into the
    restricted SPL areas which are loaded from the SoC boot ROM.

    So this provides a fast and lightweight implementation of UBI scanning
    and UBI fastmap attach. The scan and logical to physical block mapping
    code is developed from scratch, while the fastmap implementation is
    lifted from the linux kernel source and stripped down to fit the SPL
    needs.

    The text foot print on the board which I used for development is:

    6854 0 0 6854 1abd
    drivers/mtd/ubispl/built-in.o

    Attaching a NAND chip with 4096 physical eraseblocks (4 blocks are
    reserved for the SPL) takes:

    In full scan mode: 1172ms
    In fastmap mode: 95ms

    The code requires quite some storage. The largest and unknown part of
    it is the number of fastmap blocks to read. Therefor the data
    structure is not put into the BSS. The code requires a pointer to free
    memory handed in which is initialized by the UBI attach code itself.

    See doc/README.ubispl for further information on how to use it.

    This shares the ubi-media.h and crc32 implementation of drivers/mtd/ubi
    There is no way to share the fastmap code, as UBISPL only utilizes the
    slightly modified functions ubi_attach_fastmap() and ubi_scan_fastmap()
    from the original kernel ubi fastmap implementation.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ladislav Michl
    Acked-by: Heiko Schocher
    Reviewed-by: Tom Rini

    Thomas Gleixner