On Mon, May 25, 2026 at 00:31, Colin Pinnell McAllister <[email protected]> wrote:
> 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 <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> > --- > 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

