[PATCH v2] android_ab: fix slot selection
Colin Pinnell McAllister
colinmca242 at gmail.com
Mon May 25 02:31:58 CEST 2026
The boot selection rules state that a slot is bootable if it is not
corrupted and either has tries remaining or has already booted
successfully. However, slots that have tries_remaining == 0 and
successful_boot == 1 will be disregarded when picking the slot to
attempt.
Updates the selection logic so slots marked successful remain eligible
even when their tries counter is zero. Debug message now also includes
the successful_boot value.
Signed-off-by: Colin Pinnell McAllister <colinmca242 at gmail.com>
---
Changes in v2:
* No changes, just sending the patch from a gmail address
boot/android_ab.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/boot/android_ab.c b/boot/android_ab.c
index 13e82dbcb7f..f2b1110aa24 100644
--- a/boot/android_ab.c
+++ b/boot/android_ab.c
@@ -289,11 +289,14 @@ int ab_select_slot(struct blk_desc *dev_desc, struct disk_partition *part_info,
slot = -1;
for (i = 0; i < abc->nb_slot; ++i) {
if (abc->slot_info[i].verity_corrupted ||
- !abc->slot_info[i].tries_remaining) {
+ (!abc->slot_info[i].tries_remaining &&
+ !abc->slot_info[i].successful_boot)) {
log_debug("ANDROID: unbootable slot %d tries: %d, ",
i, abc->slot_info[i].tries_remaining);
- log_debug("corrupt: %d\n",
+ log_debug("corrupt: %d, ",
abc->slot_info[i].verity_corrupted);
+ log_debug("successful: %d\n",
+ abc->slot_info[i].successful_boot);
continue;
}
log_debug("ANDROID: bootable slot %d pri: %d, tries: %d, ",
--
2.34.1
More information about the U-Boot
mailing list