summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorLeonard Anderweit <[email protected]>2025-11-18 15:30:21 +0100
committerTom Rini <[email protected]>2025-11-27 09:27:03 -0600
commit962711498ddac6179f1d1f3fa123397ba02a381b (patch)
tree9d17eb453882b69299e25618ba34bf3beafd2941 /boot
parent5d7c080ae5dc1f8d5ca4fb1dd93a15ea96ca8c72 (diff)
bootstd: rauc: Only require partitions for one slot
Partitions can be become unusable due to power cuts or failed updates. Use the bootmeth RAUC if partitions for at least one slot exist. The bootmeth can then select the working slot. Signed-off-by: Leonard Anderweit <[email protected]> Tested-by: Martin Schwan <[email protected]>
Diffstat (limited to 'boot')
-rw-r--r--boot/bootmeth_rauc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c
index 1096daedb5a..833715e1395 100644
--- a/boot/bootmeth_rauc.c
+++ b/boot/bootmeth_rauc.c
@@ -99,6 +99,7 @@ static int distro_rauc_scan_parts(struct bootflow *bflow)
struct distro_rauc_priv *priv;
char *boot_order;
const char **boot_order_list;
+ bool slot_found = false;
int ret;
int i;
@@ -120,16 +121,20 @@ static int distro_rauc_scan_parts(struct bootflow *bflow)
if (desc) {
ret = fs_set_blk_dev_with_part(desc, slot->boot_part);
if (ret)
- return log_msg_ret("part", ret);
+ continue;
fs_close();
ret = part_get_info(desc, slot->root_part, NULL);
if (ret)
- return log_msg_ret("part", ret);
+ continue;
+ slot_found = true;
}
}
str_free_list(boot_order_list);
- return 0;
+ if (slot_found)
+ return 0;
+
+ return -1;
}
static int distro_rauc_read_bootflow(struct udevice *dev, struct bootflow *bflow)