From b8e140c1f23b8dd93c62946734cbed8b218450b3 Mon Sep 17 00:00:00 2001 From: Martin Herren Date: Sat, 19 Jul 2025 23:46:33 +0200 Subject: riscv: Set SYS_BOOTM_LEN default to 0x4000000 This changes the default value to the most commonly used one among existing defconfigs. Signed-off-by: Martin Herren Acked-by: Michal Simek # xilinx_mbv Reviewed-by: Leo Yu-Chi Liang Reviewed-by: Mattijs Korpershoek --- boot/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'boot') diff --git a/boot/Kconfig b/boot/Kconfig index 2ff6f003738..54ef7052c5c 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -1057,7 +1057,7 @@ config SYS_BOOTM_LEN hex "Maximum size of a decompresed OS image" depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ || \ LEGACY_IMAGE_FORMAT || SPL_LEGACY_IMAGE_FORMAT - default 0x4000000 if PPC || ARM64 + default 0x4000000 if PPC || ARM64 || RISCV default 0x1000000 if X86 || ARCH_MX6 || ARCH_MX7 default 0x800000 help -- cgit v1.2.3 From 0c558bbad9e7581808b358091d1fd979f860e8ac Mon Sep 17 00:00:00 2001 From: Martin Schwan Date: Tue, 12 Aug 2025 14:38:34 +0200 Subject: bootstd: rauc: Change global method to check any partition The bootmeth rauc should scan all partitions, in particular whole devices, and not be a global method. There may exist multiple RAUC systems on different devices and they should all be detected. This also fixes a bug, where both a global bootflow and one using an actual, complete device would be detected at the same time, when scanning for valid bootflows. Signed-off-by: Martin Schwan Tested-by: Wadim Egorov --- boot/bootmeth_rauc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'boot') diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c index cc6180221ed..7c1a895139e 100644 --- a/boot/bootmeth_rauc.c +++ b/boot/bootmeth_rauc.c @@ -410,7 +410,7 @@ static int distro_rauc_bootmeth_bind(struct udevice *dev) struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev); plat->desc = "RAUC distro boot from MMC"; - plat->flags = BOOTMETHF_GLOBAL; + plat->flags = BOOTMETHF_ANY_PART; return 0; } -- cgit v1.2.3 From 074066790c7f726f149c1974e01b8b3f75738c73 Mon Sep 17 00:00:00 2001 From: Martin Schwan Date: Wed, 13 Aug 2025 13:54:05 +0200 Subject: bootstd: rauc: Fix segfault when cleaning up slots Fix a segfault when cleaning up the slots from the private struct. This fault was generated by accessing a member of a null pointer. Signed-off-by: Martin Schwan Tested-by: Wadim Egorov --- boot/bootmeth_rauc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'boot') diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c index cc6180221ed..a27c85c4ff0 100644 --- a/boot/bootmeth_rauc.c +++ b/boot/bootmeth_rauc.c @@ -187,7 +187,7 @@ static int distro_rauc_read_bootflow(struct udevice *dev, struct bootflow *bflow ret = distro_rauc_scan_parts(bflow); if (ret < 0) { - for (i = 0; priv->slots[i]->name; i++) { + for (i = 0; priv->slots[i]; i++) { free(priv->slots[i]->name); free(priv->slots[i]); } -- cgit v1.2.3 From b389967f9a624b35c163767c34919cbdcd4e0917 Mon Sep 17 00:00:00 2001 From: Martin Schwan Date: Wed, 13 Aug 2025 13:54:06 +0200 Subject: bootstd: rauc: Don't null bootflow->bootmeth_priv Don't null bootflow->bootmeth_priv, as the private struct is freed later on by the bootflow. Signed-off-by: Martin Schwan Tested-by: Wadim Egorov --- boot/bootmeth_rauc.c | 1 - 1 file changed, 1 deletion(-) (limited to 'boot') diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c index a27c85c4ff0..c8efdce75b9 100644 --- a/boot/bootmeth_rauc.c +++ b/boot/bootmeth_rauc.c @@ -193,7 +193,6 @@ static int distro_rauc_read_bootflow(struct udevice *dev, struct bootflow *bflow } free(priv); free(boot_order_copy); - bflow->bootmeth_priv = NULL; return ret; } -- cgit v1.2.3 From 302830499d9f0ebec42fe62254429a4d8db6b36c Mon Sep 17 00:00:00 2001 From: Martin Schwan Date: Wed, 13 Aug 2025 13:54:07 +0200 Subject: bootstd: rauc: Move freeing private struct to its own function Move freeing a distro_rauc_priv struct to a new, separate function for better reuse. Signed-off-by: Martin Schwan Tested-by: Wadim Egorov --- boot/bootmeth_rauc.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'boot') diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c index c8efdce75b9..f781a7fc0b5 100644 --- a/boot/bootmeth_rauc.c +++ b/boot/bootmeth_rauc.c @@ -52,6 +52,18 @@ struct distro_rauc_priv { struct distro_rauc_slot **slots; }; +static void distro_rauc_priv_free(struct distro_rauc_priv *priv) +{ + int i; + + for (i = 0; priv->slots[i]; i++) { + free(priv->slots[i]->name); + free(priv->slots[i]); + } + free(priv->slots); + free(priv); +} + static struct distro_rauc_slot *get_slot(struct distro_rauc_priv *priv, const char *slot_name) { @@ -187,11 +199,7 @@ static int distro_rauc_read_bootflow(struct udevice *dev, struct bootflow *bflow ret = distro_rauc_scan_parts(bflow); if (ret < 0) { - for (i = 0; priv->slots[i]; i++) { - free(priv->slots[i]->name); - free(priv->slots[i]); - } - free(priv); + distro_rauc_priv_free(priv); free(boot_order_copy); return ret; } -- cgit v1.2.3 From 498e423457a0360c01d976aa21a218995a1bdef8 Mon Sep 17 00:00:00 2001 From: Martin Schwan Date: Wed, 13 Aug 2025 13:54:08 +0200 Subject: bootstd: rauc: Free private data when booting The private data struct can be freed when loading the boot script, as we don't need the slot information anymore at this point. Signed-off-by: Martin Schwan Tested-by: Wadim Egorov --- boot/bootmeth_rauc.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'boot') diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c index f781a7fc0b5..9c082dabd2b 100644 --- a/boot/bootmeth_rauc.c +++ b/boot/bootmeth_rauc.c @@ -409,6 +409,8 @@ static int distro_rauc_boot(struct udevice *dev, struct bootflow *bflow) if (ret) return log_msg_ret("boot", ret); + distro_rauc_priv_free(priv); + return 0; } -- cgit v1.2.3 From 997c0c45c197dd8bfedc41c72d4579160b018e5e Mon Sep 17 00:00:00 2001 From: Martin Schwan Date: Fri, 15 Aug 2025 09:12:56 +0200 Subject: bootstd: rauc: Do not select BOOTMETH_GLOBAL Since the bootmeth "rauc" is not a global boot method, do not select the corresponding BOOTMETH_GLOBAL option. Signed-off-by: Martin Schwan --- boot/Kconfig | 1 - 1 file changed, 1 deletion(-) (limited to 'boot') diff --git a/boot/Kconfig b/boot/Kconfig index 54ef7052c5c..2993cd7f9ba 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -869,7 +869,6 @@ config EXPO config BOOTMETH_RAUC bool "Bootdev support for RAUC A/B systems" depends on CMDLINE - select BOOTMETH_GLOBAL select HUSH_PARSER help Enables support for booting RAUC A/B systems from MMC devices. This -- cgit v1.2.3