bootstd: Probe the block device before use

In some cases the block device is obtained but is not probed, since it
is a sibling of the bootdev. Make sure it is probed, so it can be used
without any trouble.

This fixes a bug with virtio, where the device is accessed before it has
been set up by the virtio uclass.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: 201417d700a ("bootstd: Add the bootdev uclass")
Reported-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index 99ee08e..8103a11 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -309,6 +309,9 @@
 		if (ret)
 			return log_msg_ret("find", ret);
 	}
+	ret = device_probe(blk);
+	if (ret)
+		return log_msg_ret("act", ret);
 	*blkp = blk;
 
 	return 0;
diff --git a/boot/bootflow.c b/boot/bootflow.c
index dc3f1f0..b8fa37e 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -270,6 +270,10 @@
 		if (ret) {
 			bootflow_iter_set_dev(iter, NULL, 0);
 		} else {
+			/*
+			 * Probe the bootdev. This does not probe any attached
+			 * block device, since they are siblings
+			 */
 			ret = device_probe(dev);
 			log_debug("probe %s %d\n", dev->name, ret);
 			if (!log_msg_ret("probe", ret))