10 Mar, 2020

1 commit


21 Nov, 2019

2 commits

  • - In ARMv8 NXP Layerscape platforms we also need to make use of
    CONFIG_SYS_RELOC_GD_ENV_ADDR now, do so.
    - On ENV_IS_IN_REMOTE, CONFIG_ENV_OFFSET is never used, drop the define
    to 0.
    - Add Kconfig entry for ENV_ADDR.
    - Make ENV_ADDR / ENV_OFFSET depend on the env locations that use it.
    - Add ENV_xxx_REDUND options that depend on their primary option and
    SYS_REDUNDAND_ENVIRONMENT
    - On a number of PowerPC platforms, use SPL_ENV_ADDR not CONFIG_ENV_ADDR
    for the pre-main-U-Boot environment location.
    - On ENV_IS_IN_SPI_FLASH, check not for CONFIG_ENV_ADDR being set but
    rather it being non-zero, as it will now be zero by default.
    - Rework the env_offset absolute in env/embedded.o to not use
    CONFIG_ENV_OFFSET as it was the only use of ENV_OFFSET within
    ENV_IS_IN_FLASH.
    - Migrate all platforms.

    Cc: Wolfgang Denk
    Cc: Joe Hershberger
    Cc: Patrick Delaunay
    Cc: uboot-stm32@st-md-mailman.stormreply.com
    Signed-off-by: Tom Rini
    Acked-by: Joe Hershberger
    Reviewed-by: Simon Goldschmidt

    Tom Rini
     
  • We have CONFIG_ENV_SIZE_IS_REDUND but don't really use it. We have one
    board where we can simply multiple CONFIG_ENV_SIZE by two for the same
    result. The other place where we could but were not previously using
    this is for where env_internal.h checks for if we should set
    ENV_IS_EMBEDDED. This seems like the most likely use, historically, of
    the variable, but it was not used. Add logic to check for this now.

    Cc: Wolfgang Denk
    Cc: Joe Hershberger
    Signed-off-by: Tom Rini
    Reviewed-by: Simon Glass
    Acked-by: Joe Hershberger

    Tom Rini
     

12 Aug, 2019

2 commits

  • This file contains lots of internal details about the environment. Most
    code can include env.h instead, calling the functions there as needed.

    Rename this file and add a comment at the top to indicate its internal
    nature.

    Signed-off-by: Simon Glass
    Acked-by: Joe Hershberger
    Reviewed-by: Simon Goldschmidt
    [trini: Fixup apalis-tk1.c]
    Signed-off-by: Tom Rini

    Simon Glass
     
  • Move these functions to the new header file and rename set_default_env()
    to env_set_default() so that it has a consistent env_ prefix.

    Acked-by: Joe Hershberger
    Signed-off-by: Simon Glass

    Simon Glass
     

18 Jul, 2019

1 commit

  • this adds erase environment for mmc storage

    squashed fixes:
    - add CONFIG_CMD_ERASEENV
    - env: erase redundant offset if defined
    - changes mentioned by Simon
    - fix whitespaces around errmsg

    Suggested-by: Simon Goldschmidt
    Signed-off-by: Frank Wunderlich
    Reviewed-by: Simon Goldschmidt

    Frank Wunderlich
     

20 Jul, 2018

1 commit

  • The function set_default_env() sets the hashtable flags for import_r().
    Formally set_default_env() doesn't accept flags from its callers. In
    practice the caller can (un)set the H_INTERACTIVE flag, but it has to be
    done using the first character of the function's string argument. Other
    flags like H_FORCE can't be set by the caller.

    Change the function to accept flags argument. The benefits are:
    1. The caller will have to explicitly set the H_INTERACTIVE flag,
    instead of un-setting it using a special char in a string.
    2. Add the ability to propagate flags from the caller to himport(),
    especially the H_FORCE flag from do_env_default() in nvedit.c that
    currently gets ignored for "env default -a -f" commands.
    3. Flags and messages will not be coupled together. A caller will be
    able to set flags without passing a string and vice versa.

    Please note:
    The propagation of H_FORCE from do_env_default() does not introduce any
    functional changes, because currently himport_r() is set to destroy the
    old environment regardless if H_FORCE flag is set or not. More changes
    are needed to utilize the propagation of H_FORCE.

    Signed-off-by: Yaniv Levinsky
    Acked-by: Igor Grinberg

    Yaniv Levinsky
     

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

  • Use CONFIG_IS_ENABLED to see if CONFIG_BLK is enabled. Otherwise
    SPL compilation breaks on boards which do have CONFIG_BLK enabled but
    not DM_MMC for the SPL as follows:

    env/mmc.c: In function ‘init_mmc_for_env’:
    env/mmc.c:164:6: warning: implicit declaration of function ‘blk_get_from_parent’; did you mean ‘efi_get_ram_base’? [-Wimplicit-function-declaration]
    if (blk_get_from_parent(mmc->dev, &dev))
    ^~~~~~~~~~~~~~~~~~~
    efi_get_ram_base
    env/mmc.c:164:29: error: ‘struct mmc’ has no member named ‘dev’
    if (blk_get_from_parent(mmc->dev, &dev))
    ^~

    Signed-off-by: Sjoerd Simons
    Reviewed-by: Simon Glass

    Sjoerd Simons
     

20 Feb, 2018

1 commit


01 Feb, 2018

2 commits

  • For multiple env drivers to correctly implement fallback when
    one environment fails to load (e.g. crc error), the return value
    of env_import has to be propagated by all env driver's load
    function.

    Without this change, the first driver that succeeds to load an
    environment with an invalid CRC return 0 (success) and no other
    drivers are checked.

    Signed-off-by: Simon Goldschmidt
    Acked-by: Maxime Ripard

    Simon Goldschmidt
     
  • There is more common code in mmc, nand and ubi env drivers that
    can be shared by moving to env_import_redund.

    For this, a status/error value whether the buffers were loaded
    are passed as additional parameters to env_import_redund.
    Ideally, these are already returned to the env driver by the
    storage driver. This is the case for mmc, nand and ubi, so for
    this change, code deduplicated.

    Signed-off-by: Simon Goldschmidt
    Acked-by: Maxime Ripard

    Simon Goldschmidt
     

27 Jan, 2018

1 commit

  • Since we have global messages to indicate what's going on, the custom
    messages in the environment drivers only make the output less readable.

    Make MMC play a little nicer by removing all the extra \n and formatting
    that is redundant with the global output.

    Reviewed-by: Andre Przywara
    Reviewed-by: Simon Glass
    Signed-off-by: Maxime Ripard
    Reviewed-by: Jaehoon Chung

    Maxime Ripard
     

30 Nov, 2017

1 commit

  • GCC 7.1 seems to be smart enough to track val through the various
    static inline functions, but not smart enough to see that val will
    always be initialised when no error is returned. This triggers
    the following warning:
    env/mmc.c: In function 'mmc_get_env_addr':
    env/mmc.c:121:12: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]

    To make it easier for compiler to understand what is going on, let's
    initialise val.

    Signed-off-by: Philipp Tomsich
    Reviewed-by: Simon Glass

    Philipp Tomsich
     

17 Nov, 2017

1 commit


16 Aug, 2017

5 commits

  • The load() methods have inconsistent behaviour on error. Some of them load
    an empty default environment. Some load an environment containing an error
    message. Others do nothing.

    As a step in the right direction, have the method return an error code.
    Then the caller could handle this itself in a consistent way.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • This variable is declared as a global in most environment location
    drivers. But it is not used outside the drivers and most of the
    declarations are unnecessary.

    Also some drivers call free() on env_ptr which seems wrong since it is
    not in the heap.

    Drop the variable where possible, and all calls to free().

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

    Simon Glass
     
  • Add a name to the driver and use that instead of the global variable
    declared by each driver.

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

    Simon Glass
     
  • Most of the init() implementations just use the default environment.
    Adjust env_init_new() to do this automatically, and drop the redundant
    code.

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

    Simon Glass
     
  • Move over to use a the master implementation of the location drivers, with
    each method calling out to the appropriate driver.

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

    Simon Glass
     

15 Aug, 2017

3 commits

  • Set up a location driver for each supported environment location. At
    present this just points to the global functions and is not used. A
    later patch will switch this over to use private functions in each driver.

    There are several special cases here in various drivers to handle
    peculiarities of certain boards:

    1. Some boards define CONFIG_ENV_IS_IN_FAT and CONFIG_SPL_ENV_SUPPORT but
    do not actually load the environment in SPL. The env load code was
    optimised out before but with the driver, it is not. Therefore a special
    case is added to env/fat.c. The correct fix (depending on board testing
    might be to disable CONFIG_SPL_ENV_SUPPORT.

    2. A similar situations happens with CONFIG_ENV_IS_IN_FLASH. Some boards
    do not actually load the environment in SPL, so to reduce code size we
    need to drop that code. A similar fix may be possible with these boards,
    or it may be possible to adjust the environment CONFIG settings.

    Added to the above is that the CONFIG_SPL_ENV_SUPPORT option does not
    apply when the environment is in flash.

    Obviously the above has been discovered through painful and time-consuming
    trial and error. Hopefully board maintainers can take a look and figure
    out what is actually needed.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • At present we have three states for the environment, numbered 0, 1 and 2.
    Add an enum to record this to avoid open-coded values.

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

    Simon Glass
     
  • About a quarter of the files in common/ relate to the environment. It
    seems better to put these into their own subdirectory and remove the
    prefix.

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

    Simon Glass