aboutsummaryrefslogtreecommitdiffstats
path: root/boot
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2024-08-27 10:09:11 -0600
committerTom Rini <trini@konsulko.com>2024-08-27 11:17:39 -0600
commita41c1aeefb990a579663a2c7c192e590ffcf625f (patch)
treeeefacc722f753f740f668fd03e89c9ceca13957b /boot
parente5a6ce5d33db4f4d5c70d1b8250d2eaefb59918b (diff)
parentcae1ad02f7aa2ee67ecd0b18eb29c51dd8021267 (diff)
downloadu-boot-a41c1aeefb990a579663a2c7c192e590ffcf625f.tar.gz
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.
Diffstat (limited to 'boot')
-rw-r--r--boot/bootdev-uclass.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index 7c7bba088c9..807f8dfb064 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -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;