Hi all, On Mon, Oct 13, 2025 at 2:17 PM Tony Dinh <[email protected]> wrote: > > Hi Tom, > > On Mon, Oct 13, 2025 at 7:40 AM Tom Rini <[email protected]> wrote: > > > > On Sun, Oct 12, 2025 at 08:12:59PM -0700, Tony Dinh wrote: > > > Hi Simon, > > > > > > On Sat, Oct 11, 2025 at 11:52 PM Simon Glass <[email protected]> wrote: > > > > > > > > Hi Tony, > > > > > > > > On Sat, 11 Oct 2025 at 20:41, Tony Dinh <[email protected]> wrote: > > > > > > > > > > On Sat, Oct 11, 2025 at 7:37 AM Tom Rini <[email protected]> wrote: > > > > > > > > > > > > On Sat, Oct 11, 2025 at 01:03:39PM +0100, Peter Robinson wrote: > > > > > > > On Fri, 10 Oct 2025 at 15:28, Tom Rini <[email protected]> wrote: > > > > > > > > > > > > > > > > On Thu, Oct 09, 2025 at 10:29:17PM -0700, Tony Dinh wrote: > > > > > > > > > > > > > > > > > Make it possible to disable CMD_PXE. > > > > > > > > > Remove unnecessary PXE_UTILS selection in BOOTMETH_EXTLINUX > > > > > > > > > config. > > > > > > > > > In extlinux_boot(), invoke pxe utils only when > > > > > > > > > CONFIG_BOOTMETH_EXTLINUX_PXE is enabled. > > > > > > > > > > > > > > > > > > This patch results in about 9K reduction in image size when > > > > > > > > > PXE boot is disabled. > > > > > > > > > > > > > > > > > > Signed-off-by: Tony Dinh <[email protected]> > > > > > > > > > --- > > > > > > > > > > > > > > > > > > boot/Kconfig | 3 +-- > > > > > > > > > boot/bootmeth_extlinux.c | 18 ++++++++++-------- > > > > > > > > > 2 files changed, 11 insertions(+), 10 deletions(-) > > > > > > > > > > > > > > > > Is some part of the symbol logic here wrong? A challenge is > > > > > > > > that "PXE" > > > > > > > > is also where the logic to parse extlinux.conf style files came > > > > > > > > from, > > > > > > > > and I thought we had split those two out. And then there's this: > > > > > > > > > > > > > > > > > > > > > > > > > > diff --git a/boot/Kconfig b/boot/Kconfig > > > > > > > > > index 2993cd7f9ba..403ce4c3d46 100644 > > > > > > > > > --- a/boot/Kconfig > > > > > > > > > +++ b/boot/Kconfig > > > > > > > > > @@ -421,10 +421,10 @@ config BOOT_DEFAULTS_CMDS > > > > > > > > > select CMD_PART if PARTITIONS > > > > > > > > > select CMD_DHCP if CMD_NET > > > > > > > > > select CMD_PING if CMD_NET > > > > > > > > > - select CMD_PXE if CMD_NET > > > > > > > > > select CMD_BOOTI if ARM64 > > > > > > > > > select CMD_BOOTZ if ARM && !ARM64 > > > > > > > > > imply CMD_MII if NET > > > > > > > > > + imply CMD_PXE if CMD_NET > > > > > > > > If you only want scripts, then perhaps you can enable just what you > > > > need, e.g. BOOTMETH_SCRIPT? You may need to disable BOOT_DEFAULTS and > > > > choose your own options. > > > > > > Indeed, that was a missing config when I tried with BOOTSTD_FULL > > > disabled. But there is more, please see below. > > > > > > > > > > > > > > > > > > > > > > > This is one of the things where defaults isn't supposed to be > > > > > > > > so easy to > > > > > > > > get out of. How many platforms are you wanting to then disable > > > > > > > > CMD_PXE > > > > > > > > on to save space? > > > > > > > > > > > > > > PXE is generally being removed in a lot of cases as it's not > > > > > > > considered secure and now we have HTTP Boot there are other means > > > > > > > of > > > > > > > doing network booting so I think we'll see more and more > > > > > > > situations > > > > > > > where we want to disable PXE. > > > > > > > > > > > > > > This is actually something I've been meaning to look at so it's > > > > > > > something I would love to see :) > > > > > > > > > > Glad to hear :) > > > > > > > > > > > > > > > > > And in the world where we also can't just remove ATAGS support > > > > > > because > > > > > > distros (Debian at least) still boots some modern platforms via > > > > > > ATAGS + > > > > > > appended device tree, the high level options for "boot this > > > > > > anywhere" > > > > > > need to perhaps be different from "very modern requirements only > > > > > > distro". I'm not objecting to be clear. > > > > > > > > > > As Tom suggested previously, perhaps looking from a different angle. > > > > > We can disable BOOTSTD_FULL and then try adding only options that are > > > > > needed for a board. Unfortunately this approach did not work when I > > > > > tried it in the past. It seems for bootstd to work well, we need to > > > > > take the whole thing by enabling BOOTSTD_FULL. > > > > > > > > If you end up trying it again, please give a few details here as we > > > > might be able to improve this. When bootstd was first introduced we > > > > had very tight code-size constraints, so quite a few features are only > > > > provided if BOOTSTD_FULL is enabled. Tom has suggested enabling more > > > > features in the base implementation but we haven't really figured out > > > > which. > > > > > > The problem is when a board already has enabled BOOTSTD_FULL or has > > > been updated with Distro Boot (CONFIG_DISTRO_DEFAULTS), all the > > > necessary configurations such as ext2, ext4, efi partition,... are > > > implied, therefore were removed from board defconfig. They must be > > > added back. > > > > > > I actually tried this just now and it does work booting a script from > > > USB drive with this combination: > > > > > > CONFIG_BOOTMETH_SCRIPT=y > > > CONFIG_DISTRO_DEFAULTS=y (this also selects CMD_PXE, but it's OK > > > for this test) > > > # CONFIG_BOOTSTD_FULL is not set > > > > > > I think it's quite cumbersome to add each of the necessary configs > > > back to the board defconfig. Not as easy as removing CMD_PXE, or other > > > CMD_x to remove a capability. > > > > There's two parts to this. In turns of changing the defconfig to start > > with, you shouldn't need to "add back", if you do: > > $ make foo_defconfig > > $ make menuconfig # Disable full, etc > > $ make savedefconfig > > $ cp defconfig configs/foo_defconfig > > Of course you're right! "make menuconfig" works as described above. > > Thanks, > Tony > > > > > But the second part is that yes, it's at least currently intentional to > > be cumbersome to break the "all stock distributions work in all expected > > use cases" option. If you have networking, networking works in U-Boot, > > but you're not allowing users to install distros over the network like > > they should be able to expect to, it shouldn't be easy. > > > > I am open to splitting the current option up in to multiple parts, along > > the lines of legacy options, modern options, disk options, network > > options since as Peter noted earlier in this thread, PXE is going away > > in favour of HTTP(s) boot. But we still have lots of legacy boards and > > distros to support. > >
I'm withdrawing this patch. Using the Kconfig approach Tom and Simon have suggested, I was able to remove PXE and include only the BOOTMETH_SCRIPT for block devices in bootstd. My test case using the pogo_v4 board showed a saving of 17K (before: 508K, after 491K). IMHO, we should still pursue the worthy goal of "splitting the current options up into multiple parts". That will make u-boot configuration much more robust. For posterity, here is the Kconfig test using board/cloudengines/pogo_v4. diff --git a/configs/pogo_v4_defconfig b/configs/pogo_v4_defconfig index 1c0e0de8d4f..aaaa3fd51f2 100644 --- a/configs/pogo_v4_defconfig +++ b/configs/pogo_v4_defconfig @@ -17,15 +17,23 @@ CONFIG_SYS_LOAD_ADDR=0x800000 CONFIG_IDENT_STRING="\nPogoplug V4" CONFIG_PCI=y CONFIG_LTO=y -CONFIG_BOOTSTD_FULL=y +CONFIG_ENV_VARS_UBOOT_CONFIG=y +CONFIG_BOOTMETH_SCRIPT=y +CONFIG_SUPPORT_RAW_INITRD=y CONFIG_BOOTSTAGE=y CONFIG_SHOW_BOOT_PROGRESS=y CONFIG_BOOTDELAY=10 +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="bootflow scan" CONFIG_USE_PREBOOT=y CONFIG_SYS_PBSIZE=1050 CONFIG_BOARD_LATE_INIT=y CONFIG_SYS_PROMPT="Pogo_V4> " CONFIG_SYS_MAXARGS=32 +CONFIG_CMD_BOOTDEV=y +CONFIG_CMD_BOOTMETH=y +CONFIG_CMD_BOOTSTD=y +CONFIG_CMD_BOOTZ=y # CONFIG_BOOTM_PLAN9 is not set # CONFIG_BOOTM_RTEMS is not set # CONFIG_BOOTM_VXWORKS is not set @@ -35,16 +43,26 @@ CONFIG_SYS_MAXARGS=32 CONFIG_CMD_MMC=y CONFIG_CMD_MTD=y CONFIG_CMD_NAND=y +CONFIG_CMD_PART=y CONFIG_CMD_PCI=y CONFIG_CMD_SATA=y CONFIG_CMD_USB=y +CONFIG_CMD_DHCP=y CONFIG_CMD_DNS=y +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y CONFIG_CMD_SNTP=y # CONFIG_CMD_BLOCK_CACHE is not set +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_FAT=y +CONFIG_CMD_FS_GENERIC=y CONFIG_CMD_MTDPARTS=y CONFIG_MTDIDS_DEFAULT="nand0=orion_nand" CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:2M(u-boot),3M(uImage),3M(uImage2),8M(failsafe),112M(root)" CONFIG_CMD_UBI=y +CONFIG_ISO_PARTITION=y +CONFIG_EFI_PARTITION=y CONFIG_PARTITION_TYPE_GUID=y CONFIG_OF_CONTROL=y CONFIG_ENV_OVERWRITE=y @@ -72,4 +90,5 @@ CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_PCI=y CONFIG_USB_EHCI_HCD=y +CONFIG_USB_STORAGE=y CONFIG_UBIFS_SILENCE_MSG=y All the best, Tony

