[PATCH v3 41/43] vbe: Record which phases loaded using VBE

Simon Glass sjg at chromium.org
Fri Oct 21 02:23:18 CEST 2022


We expect VPL and SPL to load using VBE. Add a record of this so we can
check it in U-Boot proper.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

(no changes since v1)

 boot/vbe_simple_fw.c | 10 ++++++++++
 include/bloblist.h   |  1 +
 include/vbe.h        |  9 +++++++++
 3 files changed, 20 insertions(+)

diff --git a/boot/vbe_simple_fw.c b/boot/vbe_simple_fw.c
index fc05e9e2bd1..0a49d286703 100644
--- a/boot/vbe_simple_fw.c
+++ b/boot/vbe_simple_fw.c
@@ -9,6 +9,7 @@
 #define LOG_CATEGORY LOGC_BOOT
 
 #include <common.h>
+#include <bloblist.h>
 #include <bootdev.h>
 #include <bootflow.h>
 #include <bootmeth.h>
@@ -154,11 +155,17 @@ static int simple_load_from_image(struct spl_image_info *spl_image,
 	struct udevice *meth, *bdev;
 	struct simple_priv *priv;
 	struct bootflow bflow;
+	struct vbe_handoff *handoff;
 	int ret;
 
 	if (spl_phase() != PHASE_VPL && spl_phase() != PHASE_SPL)
 		return -ENOENT;
 
+	ret = bloblist_ensure_size(BLOBLISTT_VBE, sizeof(struct vbe_handoff),
+				   0, (void **)&handoff);
+	if (ret)
+		return log_msg_ret("ro", ret);
+
 	vbe_find_first_device(&meth);
 	if (!meth)
 		return log_msg_ret("vd", -ENODEV);
@@ -190,6 +197,9 @@ static int simple_load_from_image(struct spl_image_info *spl_image,
 	/* this is not used from now on, so free it */
 	bootflow_free(&bflow);
 
+	/* Record that VBE was used in this phase */
+	handoff->phases |= 1 << spl_phase();
+
 	return 0;
 }
 SPL_LOAD_IMAGE_METHOD("vbe_simple", 5, BOOT_DEVICE_VBE,
diff --git a/include/bloblist.h b/include/bloblist.h
index 9684bfd5f4b..2a2f1700eb0 100644
--- a/include/bloblist.h
+++ b/include/bloblist.h
@@ -112,6 +112,7 @@ enum bloblist_tag_t {
 	 */
 	BLOBLISTT_PROJECT_AREA = 0x8000,
 	BLOBLISTT_U_BOOT_SPL_HANDOFF = 0x8000, /* Hand-off info from SPL */
+	BLOBLISTT_VBE		= 0x8001,	/* VBE per-phase state */
 
 	/*
 	 * Vendor-specific tags are permitted here. Projects can be open source
diff --git a/include/vbe.h b/include/vbe.h
index ece2697b5dc..5ede8181b98 100644
--- a/include/vbe.h
+++ b/include/vbe.h
@@ -25,6 +25,15 @@ enum vbe_phase_t {
 	VBE_PHASE_OS,
 };
 
+/**
+ * struct vbe_handoff - information about VBE progress
+ *
+ * @phases: Indicates which phases used the VBE bootmeth (1 << PHASE_...)
+ */
+struct vbe_handoff {
+	u8 phases;
+};
+
 /**
  * vbe_phase() - get current VBE phase
  *
-- 
2.38.0.135.g90850a2211-goog



More information about the U-Boot mailing list