From be43a35bff17550fa707795a06eaed6114eb1742 Mon Sep 17 00:00:00 2001 From: John Keeping Date: Thu, 28 Jul 2022 11:19:15 +0100 Subject: [PATCH] boot: allow bootmeth-distro without CONFIG_NET Remove the dependency on CMD_PXE from BOOTMETH_DISTRO by introducing a new hidden kconfig symbol to control whether pxe_utils is compiled, allowing bootstd's distro method to be compiled without needing networking support enabled. Signed-off-by: John Keeping Reviewed-by: Tom Rini Reviewed-by: Simon Glass Correct build errors when CMD_BOOTM is not enabled: Signed-off-by: Simon Glass --- boot/Kconfig | 8 +++++++- boot/Makefile | 3 +-- boot/pxe_utils.c | 3 ++- cmd/Kconfig | 4 ++-- include/command.h | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/boot/Kconfig b/boot/Kconfig index eddb0c6b31..a294ad769e 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -294,6 +294,12 @@ endif # SPL endif # FIT +config PXE_UTILS + bool + select MENU + help + Utilities for parsing PXE file formats. + config BOOTSTD bool "Standard boot support" default y @@ -345,7 +351,7 @@ config BOOTSTD_BOOTCOMMAND config BOOTMETH_DISTRO bool "Bootdev support for distro boot" - depends on CMD_PXE + select PXE_UTILS default y help Enables support for distro boot using bootdevs. This makes the diff --git a/boot/Makefile b/boot/Makefile index a70674259c..124065a03f 100644 --- a/boot/Makefile +++ b/boot/Makefile @@ -10,8 +10,7 @@ obj-$(CONFIG_CMD_BOOTM) += bootm.o bootm_os.o obj-$(CONFIG_CMD_BOOTZ) += bootm.o bootm_os.o obj-$(CONFIG_CMD_BOOTI) += bootm.o bootm_os.o -obj-$(CONFIG_CMD_PXE) += pxe_utils.o -obj-$(CONFIG_CMD_SYSBOOT) += pxe_utils.o +obj-$(CONFIG_PXE_UTILS) += pxe_utils.o endif diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c index defbe465e4..a364fa8bb5 100644 --- a/boot/pxe_utils.c +++ b/boot/pxe_utils.c @@ -736,7 +736,8 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label) kernel_addr_r = genimg_get_kernel_addr(kernel_addr); buf = map_sysmem(kernel_addr_r, 0); /* Try bootm for legacy and FIT format image */ - if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID) + if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID && + IS_ENABLED(CONFIG_CMD_BOOTM)) do_bootm(ctx->cmdtp, 0, bootm_argc, bootm_argv); /* Try booting an AArch64 Linux kernel image */ else if (IS_ENABLED(CONFIG_CMD_BOOTI)) diff --git a/cmd/Kconfig b/cmd/Kconfig index 3625ff2a50..7d19706a8e 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1825,7 +1825,7 @@ config CMD_ETHSW config CMD_PXE bool "pxe" - select MENU + select PXE_UTILS help Boot image via network using PXE protocol @@ -2007,7 +2007,7 @@ config CMD_SOUND config CMD_SYSBOOT bool "sysboot" - select MENU + select PXE_UTILS help Boot image via local extlinux.conf file diff --git a/include/command.h b/include/command.h index 44c91f655d..7fac7e02d4 100644 --- a/include/command.h +++ b/include/command.h @@ -148,9 +148,9 @@ int cmd_get_data_size(char *arg, int default_size); int do_bootd(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]); #endif -#ifdef CONFIG_CMD_BOOTM int do_bootm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]); +#ifdef CONFIG_CMD_BOOTM int bootm_maybe_autostart(struct cmd_tbl *cmdtp, const char *cmd); #else static inline int bootm_maybe_autostart(struct cmd_tbl *cmdtp, const char *cmd) -- 2.39.5