>From your description it seems like the board I was working on must have
had an environment on NOR or eMMC which could be loaded but did not allow
the board to come up.
Then, the patch forces u-boot to use the default environment despite an
existing env on NOR or eMMC.

> This reverts commit 8d61237edbf6314a701cf78da2c5893a73ff5438.
>
> This commit broke environment on literally every board I have access
> to, with this revert in place, environment works as it should again.
> The problem I observe with this patch is that saved environment in
> either SPI NOR or eMMC is never used, the system always falls back
> to default environment. The 'saveenv' command does succeed, but then
> after reset, the default env is again used.
>
> Furthermore, the commit introduced duplicate code in env_init(), this:
> "
>       if (!prio) {
>               gd->env_addr = (ulong)&default_environment[0];
>               gd->env_valid = ENV_INVALID;
>
>               return 0;
>       }
>
>       if (ret == -ENOENT) {
>               gd->env_addr = (ulong)&default_environment[0];
>               gd->env_valid = ENV_INVALID;
>
>               return 0;
>       }
> "
>
> Furthermore, the commit is missing DCO SoB line.
>
> Also note that upstream does not support UltraZed EG board, so
> this might have been a patch pulled from downstream which did
> depend on some other downstream behavior.
>
> Signed-off-by: Marek Vasut <ma...@denx.de>
> Cc: felix.vietme...@jila.colorado.edu <felix.vietme...@jila.colorado.edu>
> Cc: Tom Rini <tr...@konsulko.com>
> ---
>  env/env.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/env/env.c b/env/env.c
> index 7168cb9d318..e4dfb92e154 100644
> --- a/env/env.c
> +++ b/env/env.c
> @@ -322,18 +322,17 @@ int env_init(void)
>
>               debug("%s: Environment %s init done (ret=%d)\n", __func__,
>                     drv->name, ret);
> -     }
> -
> -     if (!prio) {
> -             gd->env_addr = (ulong)&default_environment[0];
> -             gd->env_valid = ENV_INVALID;
>
> -             return 0;
> +             if (gd->env_valid == ENV_INVALID)
> +                     ret = -ENOENT;
>       }
>
> +     if (!prio)
> +             return -ENODEV;
> +
>       if (ret == -ENOENT) {
>               gd->env_addr = (ulong)&default_environment[0];
> -             gd->env_valid = ENV_INVALID;
> +             gd->env_valid = ENV_VALID;
>
>               return 0;
>       }
> --
> 2.35.1
>


Reply via email to