[PATCH v2 57/71] bootstd: Use hunters when scanning for bootflows

Simon Glass sjg at chromium.org
Sun Jan 8 03:50:33 CET 2023


Add a flag to control whether hunters are used when scanning for
bootflows. Enable it by default and tidy up the flag comments a little.

Fow now this has no effect, until a future patch enables this feature.

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

(no changes since v1)

 cmd/bootflow.c     |  5 ++++-
 include/bootflow.h | 21 ++++++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/cmd/bootflow.c b/cmd/bootflow.c
index c8b2f5efdeb..fe58de5fa59 100644
--- a/cmd/bootflow.c
+++ b/cmd/bootflow.c
@@ -96,7 +96,7 @@ static int do_bootflow_scan(struct cmd_tbl *cmdtp, int flag, int argc,
 	struct udevice *dev;
 	struct bootflow bflow;
 	bool all = false, boot = false, errors = false, no_global = false;
-	bool list = false;
+	bool list = false, no_hunter = false;
 	int num_valid = 0;
 	bool has_args;
 	int ret, i;
@@ -115,6 +115,7 @@ static int do_bootflow_scan(struct cmd_tbl *cmdtp, int flag, int argc,
 			errors = strchr(argv[1], 'e');
 			no_global = strchr(argv[1], 'G');
 			list = strchr(argv[1], 'l');
+			no_hunter = strchr(argv[1], 'H');
 			argc--;
 			argv++;
 		}
@@ -141,6 +142,8 @@ static int do_bootflow_scan(struct cmd_tbl *cmdtp, int flag, int argc,
 		flags |= BOOTFLOWF_ALL;
 	if (no_global)
 		flags |= BOOTFLOWF_SKIP_GLOBAL;
+	if (!no_hunter)
+		flags |= BOOTFLOWF_HUNT;
 
 	/*
 	 * If we have a device, just scan for bootflows attached to that device
diff --git a/include/bootflow.h b/include/bootflow.h
index 9c6610bb922..4012f4b8a82 100644
--- a/include/bootflow.h
+++ b/include/bootflow.h
@@ -91,17 +91,28 @@ struct bootflow {
  * enum bootflow_flags_t - flags for the bootflow iterator
  *
  * @BOOTFLOWF_FIXED: Only used fixed/internal media
- * @BOOTFLOWF_SHOW: Show each bootdev before scanning it
+ * @BOOTFLOWF_SHOW: Show each bootdev before scanning it; show each hunter
+ * before using it
  * @BOOTFLOWF_ALL: Return bootflows with errors as well
- * @BOOTFLOWF_SINGLE_DEV: Just scan one bootmeth
- * @BOOTFLOWF_SKIP_GLOBAL: Don't scan global bootmeths
+ * @BOOTFLOWF_HUNT: Hunt for new bootdevs using the bootdrv hunters
+ *
+ * Internal flags:
+ * @BOOTFLOWF_SINGLE_DEV: (internal) Just scan one bootdev
+ * @BOOTFLOWF_SKIP_GLOBAL: (internal) Don't scan global bootmeths
+ * this uclass
  */
 enum bootflow_flags_t {
 	BOOTFLOWF_FIXED		= 1 << 0,
 	BOOTFLOWF_SHOW		= 1 << 1,
 	BOOTFLOWF_ALL		= 1 << 2,
-	BOOTFLOWF_SINGLE_DEV	= 1 << 3,
-	BOOTFLOWF_SKIP_GLOBAL	= 1 << 4,
+	BOOTFLOWF_HUNT		= 1 << 3,
+
+	/*
+	 * flags used internally by standard boot - do not set these when
+	 * calling bootflow_scan_bootdev() etc.
+	 */
+	BOOTFLOWF_SINGLE_DEV	= 1 << 16,
+	BOOTFLOWF_SKIP_GLOBAL	= 1 << 17,
 };
 
 /**
-- 
2.39.0.314.g84b9a713c41-goog



More information about the U-Boot mailing list