summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
Diffstat (limited to 'boot')
-rw-r--r--boot/Kconfig3
-rw-r--r--boot/bootmeth_rauc.c23
2 files changed, 17 insertions, 9 deletions
diff --git a/boot/Kconfig b/boot/Kconfig
index 2ff6f003738..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
@@ -1057,7 +1056,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
diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c
index cc6180221ed..81a73046e83 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,13 +199,8 @@ 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++) {
- free(priv->slots[i]->name);
- free(priv->slots[i]);
- }
- free(priv);
+ distro_rauc_priv_free(priv);
free(boot_order_copy);
- bflow->bootmeth_priv = NULL;
return ret;
}
@@ -402,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;
}
@@ -410,7 +419,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;
}