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
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__,
|
debug("%s: Environment %s init done (ret=%d)\n", __func__,
|
||||||
drv->name, ret);
|
drv->name, ret);
|
||||||
|
|
||||||
if (gd->env_valid == ENV_INVALID)
|
|
||||||
ret = -ENOENT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!prio)
|
if (!prio) {
|
||||||
return -ENODEV;
|
gd->env_addr = (ulong)&default_environment[0];
|
||||||
|
gd->env_valid = ENV_INVALID;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (ret == -ENOENT) {
|
if (ret == -ENOENT) {
|
||||||
gd->env_addr = (ulong)&default_environment[0];
|
gd->env_addr = (ulong)&default_environment[0];
|
||||||
gd->env_valid = ENV_VALID;
|
gd->env_valid = ENV_INVALID;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user