From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
If the "BOOT_CMD" variable is set to "none" inside the config
file, the boot command (i.e. "booti") will not by added to the
generated script, to allow the user to customize the u-boot env
or the device-tree after executing the script commands and before
actually booting.
Added commands to store the addresses where the Xen image and
device-tree file are loaded, in 'host_kernel_addr' and 'host_fdt_addr'
variables, if the boot command is skipped and the "-s" parameter is
not used.
The `booti` command can then be executed as part of the 'bootcmd' variable
in u-boot, which should contain:
1. fetching the generated u-boot script
2. executing the script
3. running `booti ${host_kernel_addr} - ${host_fdt_addr}` command
Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
---
README.md | 5 ++++-
scripts/uboot-script-gen | 16 +++++++++++++---
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index cb15ca5..b1a9b9d 100644
--- a/README.md
+++ b/README.md
@@ -80,7 +80,10 @@ Where:
- BOOT_CMD specifies the u-boot command used to boot the binaries.
By default, it is 'booti'. The acceptable values are 'booti', 'bootm'
- and 'bootefi'.
+ and 'bootefi' and 'none'. If the value is 'none', the BOOT_CMD is not
+ added to the boot script, and the addresses for the Xen binary and the
+ DTB are stored in 'host_kernel_addr' and 'host_fdt_addr' u-boot
+ env variables respectively, to be used manually when booting.
- DEVICE_TREE specifies the DTB file to load.
diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index 444c65a..994369c 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -966,7 +966,7 @@ function check_depends()
function check_boot_cmd()
{
- if ! [[ " bootm booti bootefi " =~ " ${BOOT_CMD}" ]]
+ if ! [[ " bootm booti bootefi none " =~ " ${BOOT_CMD}" ]]
then
echo "\"BOOT_CMD=$BOOT_CMD\" is not valid"
exit 1
@@ -1255,9 +1255,19 @@ echo "setenv fdt_high 0xffffffffffffffff" >> $UBOOT_SOURCE
if test "$dynamic_loading_opt"
then
- echo "$BOOT_CMD \${host_kernel_addr} - \${host_fdt_addr}" >> $UBOOT_SOURCE
+ if [ "$BOOT_CMD" != "none" ]
+ then
+ echo "$BOOT_CMD \${host_kernel_addr} - \${host_fdt_addr}" >> $UBOOT_SOURCE
+ fi
else
- echo "$BOOT_CMD $kernel_addr - $device_tree_addr" >> $UBOOT_SOURCE
+ if [ "$BOOT_CMD" != "none" ]
+ then
+ echo "$BOOT_CMD $kernel_addr - $device_tree_addr" >> $UBOOT_SOURCE
+ else
+ # skip boot command but store load addresses to be used later
+ echo "setenv host_kernel_addr $kernel_addr" >> $UBOOT_SOURCE
+ echo "setenv host_fdt_addr $device_tree_addr" >> $UBOOT_SOURCE
+ fi
fi
if test "$FIT"
--
2.35.1
On Thu, 30 Jun 2022, Andrei Cherechesu (OSS) wrote:
> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>
> If the "BOOT_CMD" variable is set to "none" inside the config
> file, the boot command (i.e. "booti") will not by added to the
> generated script, to allow the user to customize the u-boot env
> or the device-tree after executing the script commands and before
> actually booting.
>
> Added commands to store the addresses where the Xen image and
> device-tree file are loaded, in 'host_kernel_addr' and 'host_fdt_addr'
> variables, if the boot command is skipped and the "-s" parameter is
> not used.
>
> The `booti` command can then be executed as part of the 'bootcmd' variable
> in u-boot, which should contain:
> 1. fetching the generated u-boot script
> 2. executing the script
> 3. running `booti ${host_kernel_addr} - ${host_fdt_addr}` command
>
> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
I think this patch is fine in principle but I need to review in a bit
more details patch #2 before I am able to commit it
> ---
> README.md | 5 ++++-
> scripts/uboot-script-gen | 16 +++++++++++++---
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/README.md b/README.md
> index cb15ca5..b1a9b9d 100644
> --- a/README.md
> +++ b/README.md
> @@ -80,7 +80,10 @@ Where:
>
> - BOOT_CMD specifies the u-boot command used to boot the binaries.
> By default, it is 'booti'. The acceptable values are 'booti', 'bootm'
> - and 'bootefi'.
> + and 'bootefi' and 'none'. If the value is 'none', the BOOT_CMD is not
> + added to the boot script, and the addresses for the Xen binary and the
> + DTB are stored in 'host_kernel_addr' and 'host_fdt_addr' u-boot
> + env variables respectively, to be used manually when booting.
>
> - DEVICE_TREE specifies the DTB file to load.
>
> diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
> index 444c65a..994369c 100755
> --- a/scripts/uboot-script-gen
> +++ b/scripts/uboot-script-gen
> @@ -966,7 +966,7 @@ function check_depends()
>
> function check_boot_cmd()
> {
> - if ! [[ " bootm booti bootefi " =~ " ${BOOT_CMD}" ]]
> + if ! [[ " bootm booti bootefi none " =~ " ${BOOT_CMD}" ]]
> then
> echo "\"BOOT_CMD=$BOOT_CMD\" is not valid"
> exit 1
> @@ -1255,9 +1255,19 @@ echo "setenv fdt_high 0xffffffffffffffff" >> $UBOOT_SOURCE
>
> if test "$dynamic_loading_opt"
> then
> - echo "$BOOT_CMD \${host_kernel_addr} - \${host_fdt_addr}" >> $UBOOT_SOURCE
> + if [ "$BOOT_CMD" != "none" ]
> + then
> + echo "$BOOT_CMD \${host_kernel_addr} - \${host_fdt_addr}" >> $UBOOT_SOURCE
> + fi
> else
> - echo "$BOOT_CMD $kernel_addr - $device_tree_addr" >> $UBOOT_SOURCE
> + if [ "$BOOT_CMD" != "none" ]
> + then
> + echo "$BOOT_CMD $kernel_addr - $device_tree_addr" >> $UBOOT_SOURCE
> + else
> + # skip boot command but store load addresses to be used later
> + echo "setenv host_kernel_addr $kernel_addr" >> $UBOOT_SOURCE
> + echo "setenv host_fdt_addr $device_tree_addr" >> $UBOOT_SOURCE
> + fi
> fi
>
> if test "$FIT"
> --
> 2.35.1
>
© 2016 - 2026 Red Hat, Inc.