mirror of
https://xff.cz/git/u-boot/
synced 2026-01-06 19:49:18 +01:00
Merge patch series "bootstd: Try again to resolve infinite-loop bug"
Simon Glass <sjg@chromium.org> says: This little series tries to resolve a problem found with an earlier fix.
This commit is contained in:
@@ -632,7 +632,7 @@ int bootdev_next_label(struct bootflow_iter *iter, struct udevice **devp,
|
||||
|
||||
int bootdev_next_prio(struct bootflow_iter *iter, struct udevice **devp)
|
||||
{
|
||||
struct udevice *dev = *devp, *last_dev = NULL;
|
||||
struct udevice *dev = *devp;
|
||||
bool found;
|
||||
int ret;
|
||||
|
||||
@@ -640,6 +640,7 @@ int bootdev_next_prio(struct bootflow_iter *iter, struct udevice **devp)
|
||||
*devp = NULL;
|
||||
log_debug("next prio %d: dev=%p/%s\n", iter->cur_prio, dev,
|
||||
dev ? dev->name : "none");
|
||||
found = false;
|
||||
do {
|
||||
/*
|
||||
* Don't probe devices here since they may not be of the
|
||||
@@ -682,23 +683,13 @@ int bootdev_next_prio(struct bootflow_iter *iter, struct udevice **devp)
|
||||
}
|
||||
} else {
|
||||
ret = device_probe(dev);
|
||||
if (!ret)
|
||||
last_dev = dev;
|
||||
if (ret) {
|
||||
log_warning("Device '%s' failed to probe\n",
|
||||
if (ret)
|
||||
log_debug("Device '%s' failed to probe\n",
|
||||
dev->name);
|
||||
if (last_dev == dev) {
|
||||
/*
|
||||
* We have already tried this device
|
||||
* and it failed to probe. Give up.
|
||||
*/
|
||||
return log_msg_ret("probe", ret);
|
||||
}
|
||||
last_dev = dev;
|
||||
dev = NULL;
|
||||
}
|
||||
else
|
||||
found = true;
|
||||
}
|
||||
} while (!dev);
|
||||
} while (!found);
|
||||
|
||||
*devp = dev;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user