[PATCH] Revert "env: Load env when ENV_IS_NOWHERE is only location selected"

Felix.Vietmeyer at jila.colorado.edu Felix.Vietmeyer at jila.colorado.edu
Sun Apr 10 13:54:22 CEST 2022


>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 <marex at denx.de>
> Cc: Felix.Vietmeyer at jila.colorado.edu <felix.vietmeyer at jila.colorado.edu>
> Cc: Tom Rini <trini at 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
>




More information about the U-Boot mailing list