diff options
author | Felix.Vietmeyer@jila.colorado.edu <Felix.Vietmeyer@jila.colorado.edu> | 2021-04-20 20:04:26 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-04-07 13:52:36 -0400 |
commit | 8d61237edbf6314a701cf78da2c5893a73ff5438 (patch) | |
tree | 13c352a05cbb1af82f25ec6df490482ab7390c48 /env | |
parent | 545eceb52062cdc995c45b9581174b7ae66b0e6f (diff) | |
download | u-boot-8d61237edbf6314a701cf78da2c5893a73ff5438.zip u-boot-8d61237edbf6314a701cf78da2c5893a73ff5438.tar.gz u-boot-8d61237edbf6314a701cf78da2c5893a73ff5438.tar.bz2 |
env: Load env when ENV_IS_NOWHERE is only location selected
This patch prevent u-boot from hanging on a UltraZed EG board (zynqmp).
Without the patch,
(drv = env_driver_lookup(ENVOP_INIT, prio))
evaluates to 0, causing prio = 0
Then, (!prio) is hit, returning -ENODEV causing a stall.
With the patch,
instead of returning -ENODEV and causing a stall, we
set gd->env_addr (is this really needed?)
and then
mark gd->env_valid = ENV_INVALID to use the default env.
Diffstat (limited to 'env')
-rw-r--r-- | env/env.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -322,17 +322,18 @@ int env_init(void) debug("%s: Environment %s init done (ret=%d)\n", __func__, drv->name, ret); - - if (gd->env_valid == ENV_INVALID) - ret = -ENOENT; } - if (!prio) - return -ENODEV; + 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_VALID; + gd->env_valid = ENV_INVALID; return 0; } |