mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
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.
This commit is contained in:
parent
545eceb520
commit
8d61237edb
1 changed files with 7 additions and 6 deletions
13
env/env.c
vendored
13
env/env.c
vendored
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue