From patchwork Mon Sep 22 18:00:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 394 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1758564127; bh=JqZYvv8dVkzMUX6Pp1AAVEHHomaFokC1sFUVA2FvXD8=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=tuJXmzM4QUkr+TMT52ys7IXzuyP+AZB5NzYwVfr8LejXmu1deC2fcNwgQ1Jlk39tL Kh/iwzMoQkfZNEt/+fftIg5nvjaLgvpeH6oIzSIX11kt3DxzvuwE+tr5p+7k6QeXSM 4uBXFWHl6Ogx2aeFfe3tjbh14HdLmJRRixLtxH2FuFk+2qiQcGf7s4SNGfjos35uCB KOYt+ZanZkmuP3zQB5WEMTwIOrfhhmQ0TV2t0eTHvyv+fH0V/6yfswVBTg2d/ZrDmh 1JFe8IMD+snOQDQCUNjBJPjImRHP7LZ16kRFHnPlzPG45HzcW+37ncQRCM81JjFSju HF3fTK992OmbQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 8B48C67CB2 for ; Mon, 22 Sep 2025 12:02:07 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id jZZwaLdIn3CF for ; Mon, 22 Sep 2025 12:02:07 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1758564125; bh=JqZYvv8dVkzMUX6Pp1AAVEHHomaFokC1sFUVA2FvXD8=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=fmAyPCletLixtgYWjkiYjXuLQck/Zml45GiHrsdAHRElyc8Sf/qB+Ot9GIzZHG5Y1 6Dmt8gurOoX6QCdTs3DuJtvs3zKkYqTOus22VquwjeCn2NIGdkJ7DN15Sqpyvc3BWP 1bKH+Xbzy3zrzzT3pAjvF9FtfIhfXM4C1YOVS6Rd2fdFLNwYGXAPjV+LfX9DqgIwrF vzIte/7jm4/0nO0wuCPJ2Bo+V2oOiJw7ikwYxD2Lnhcj6DmVqxPmtD+08X6J765yOd xUT41bPwEwb+0ef5y4Z5iQry+bSwktlpJL0IKKOw71OetJ8i0wgj5zfyeYhcqGZTDu Vv/0lFAU5xvbA== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 81DF25FE1A for ; Mon, 22 Sep 2025 12:02:05 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1758564122; bh=+1QoAaYpN6kMnOIpFonaGbbDao0T16ysceSRHziPLms=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JSXN6p1LwYL8kXbnne3IHjUfe5qi0aBBCUrIIzTSlSwrkkijN8kAe8/7prXs6OJoq W5PgucmxpfpajGQE9XFTX+TobSBXQFMtanS1az75V4hjsI/0LoVMHNG1eOnMiOIOIn aYQT7OCJvyvnpXqugV8lKDVoEdkC1sVJuDMA1MDbDrSWXHmTVoUlDuEpGPd2NgxN5C y28zAnbTIyU9XLZlJ+KSYuDhHM2dxObGij9LBjwVk19R3UBN/5wX2LCiwDpmRD40hj Nk0dIgtit2ER8z9+9X4e8JvhkNzOdXZkg1/WQiF23/YYkLn5fM+G6QY2cfW875jIgw F5zqABjLLaDyw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id EAF8367B38; Mon, 22 Sep 2025 12:02:02 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id UW_8BM5XydeV; Mon, 22 Sep 2025 12:02:02 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1758564122; bh=/OzobNneqHd2Y9zxyOYCp5VYxvbbHjIXT1EvZSr85Yo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uVZvDJd5gh7A3hYamS9uqkffTa+nKo1VLg+Zf2QXxOungqiaUGr+H5WKOIZ96brx/ YIak+9+wBBswrTwKNVso/3ha+qFmJxlYSMImmoLZA7OxZyb4YcSjmmh/qnZco7I0mZ GpcM4fu12ygVZJ9xvix1JCMi0T5sWKSiPVwj6A6G6lM5Wi6udv+LldAKcvPx/oqEda BE2nyMiu6/QzkIZBI2bEPX2kEUgoX+RvS8NmjoGuoMB4iZ54pbrXZH5lu91yi1tPIE TScUP2OXPsS0YZD3sp7+KsmzdzAy2u/POUtQLg9F9OVI9q4Aq07KFEFMKFqo1ubXxb Us9DT4QNAVbVw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id D9DEC67C32; Mon, 22 Sep 2025 12:02:01 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Mon, 22 Sep 2025 12:00:54 -0600 Message-ID: <20250922180116.3088502-11-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250922180116.3088502-1-sjg@u-boot.org> References: <20250922180116.3088502-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: RLLBNNQYMU62NRQIIMM237T73M2RAE6N X-Message-ID-Hash: RLLBNNQYMU62NRQIIMM237T73M2RAE6N X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt , Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 10/24] boot: Provide a bootflow option to fake a boot List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Allow using 'bootflow boot -f' to fake a boot. Signed-off-by: Simon Glass --- cmd/bootflow.c | 16 ++++++++++++++-- doc/usage/cmd/bootflow.rst | 3 +++ include/bootflow.h | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/cmd/bootflow.c b/cmd/bootflow.c index 43335fecb34..33ed9a1cd73 100644 --- a/cmd/bootflow.c +++ b/cmd/bootflow.c @@ -523,8 +523,12 @@ static int do_bootflow_boot(struct cmd_tbl *cmdtp, int flag, int argc, { struct bootstd_priv *std; struct bootflow *bflow; + bool fake = false; int ret; + if (IS_ENABLED(CONFIG_BOOTM_FAKE_GO) && argc > 1 && *argv[1] == '-') + fake = strchr(argv[1], 'f'); + ret = bootstd_get_priv(&std); if (ret) return CMD_RET_FAILURE; @@ -538,6 +542,14 @@ static int do_bootflow_boot(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_FAILURE; } bflow = std->cur_bootflow; + + if (IS_ENABLED(CONFIG_BOOTM_FAKE_GO)) { + if (fake) + bflow->flags |= BOOTFLOWF_FAKE_GO; + else + bflow->flags &= ~BOOTFLOWF_FAKE_GO; + } + log_debug("cmd bflow flags %x\n", bflow->flags); ret = bootflow_run_boot(NULL, bflow); if (ret) return CMD_RET_FAILURE; @@ -649,7 +661,7 @@ U_BOOT_LONGHELP(bootflow, "bootflow select [|] - select a bootflow\n" "bootflow info [-ds] - show info on current bootflow (-d dump bootflow)\n" "bootflow read - read all current-bootflow files\n" - "bootflow boot - boot current bootflow\n" + "bootflow boot [-f] - boot current bootflow (-f fake)\n" "bootflow menu [-t] - show a menu of available bootflows\n" "bootflow cmdline [set|get|clear|delete|auto] [] - update cmdline" #else @@ -664,7 +676,7 @@ U_BOOT_CMD_WITH_SUBCMDS(bootflow, "Boot flows", bootflow_help_text, U_BOOT_SUBCMD_MKENT(select, 2, 1, do_bootflow_select), U_BOOT_SUBCMD_MKENT(info, 2, 1, do_bootflow_info), U_BOOT_SUBCMD_MKENT(read, 1, 1, do_bootflow_read), - U_BOOT_SUBCMD_MKENT(boot, 1, 1, do_bootflow_boot), + U_BOOT_SUBCMD_MKENT(boot, 2, 1, do_bootflow_boot), U_BOOT_SUBCMD_MKENT(menu, 2, 1, do_bootflow_menu), U_BOOT_SUBCMD_MKENT(cmdline, 4, 1, do_bootflow_cmdline), #endif diff --git a/doc/usage/cmd/bootflow.rst b/doc/usage/cmd/bootflow.rst index d57a6e36c3b..938e5c79903 100644 --- a/doc/usage/cmd/bootflow.rst +++ b/doc/usage/cmd/bootflow.rst @@ -231,6 +231,9 @@ bootflow boot This boots the current bootflow, reading any required files first. +For debugging only, the `-f` flag can be provided to cause a fake boot. This +runs the boot through to the point of handing off to the OS, then returns, to +allow the state to be examined. bootflow cmdline ~~~~~~~~~~~~~~~~ diff --git a/include/bootflow.h b/include/bootflow.h index c8f5d6e0859..284c23c59dd 100644 --- a/include/bootflow.h +++ b/include/bootflow.h @@ -52,11 +52,14 @@ enum bootflow_state_t { * @BOOTFLOWF_STATIC_BUF: Indicates that @bflow->buf is statically set, rather * than being allocated by malloc(). * @BOOTFLOWF_USE_BUILTIN_FDT: Indicates that current bootflow uses built-in FDT + * @BOOTFLOWF_FAKE_GO: Do a 'fake' boot, up to the last possible point, then + * return */ enum bootflow_flags_t { BOOTFLOWF_USE_PRIOR_FDT = BIT(0), BOOTFLOWF_STATIC_BUF = BIT(1), BOOTFLOWF_USE_BUILTIN_FDT = BIT(2), + BOOTFLOWF_FAKE_GO = BIT(3), }; /**