summaryrefslogtreecommitdiff
path: root/boot/vbe_simple_os.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-01-13 02:48:54 +0300
committerTom Rini <trini@konsulko.com>2023-01-19 03:41:16 +0300
commit635bb31dad88f852b90376dfa38250b842cc5ba4 (patch)
treea16efbc231e6f5f90b0e3e056a5c8fbd4cf18e17 /boot/vbe_simple_os.c
parent65d373abb0e8267ca98723429b330186af35e0e1 (diff)
downloadu-boot-635bb31dad88f852b90376dfa38250b842cc5ba4.tar.xz
vbe: Allow probing the VBE bootmeth to fail in OS fixup
This device is created when there are no bootmeths defined in the device tree. But it cannot be probed without a device tree node. For now, ignore a probe failure. Signed-off-by: Simon Glass <sjg@chromium.org> Reported-by: Karsten Merker <merker@debian.org> Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Fixes: a56f663f0707 ("vbe: Add info about the VBE device to the fwupd node") Tested-by: Vagrant Cascadian <vagrant@debian.org> Tested-by: Karsten Merker <merker@debian.org>
Diffstat (limited to 'boot/vbe_simple_os.c')
-rw-r--r--boot/vbe_simple_os.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/boot/vbe_simple_os.c b/boot/vbe_simple_os.c
index b2041a95a3..8c641ec07e 100644
--- a/boot/vbe_simple_os.c
+++ b/boot/vbe_simple_os.c
@@ -72,6 +72,18 @@ static int bootmeth_vbe_simple_ft_fixup(void *ctx, struct event *event)
chosen = oftree_path(tree, "/chosen");
if (!ofnode_valid(chosen))
continue;
+
+ ret = device_probe(dev);
+ if (ret) {
+ /*
+ * This should become an error when VBE is updated to
+ * only bind this device when a node exists
+ */
+ log_debug("VBE device '%s' failed to probe (err=%d)",
+ dev->name, ret);
+ return 0;
+ }
+
ret = ofnode_add_subnode(chosen, "fwupd", &node);
if (ret && ret != -EEXIST)
return log_msg_ret("fwu", ret);
@@ -80,10 +92,6 @@ static int bootmeth_vbe_simple_ft_fixup(void *ctx, struct event *event)
if (ret && ret != -EEXIST)
return log_msg_ret("dev", ret);
- ret = device_probe(dev);
- if (ret)
- return log_msg_ret("probe", ret);
-
/* Copy over the vbe properties for fwupd */
log_debug("Fixing up: %s\n", dev->name);
ret = ofnode_copy_props(dev_ofnode(dev), subnode);