]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
fwu: Mark failed bank as invalid during rollback
authorKory Maincent <kory.maincent@bootlin.com>
Mon, 19 Jan 2026 16:07:42 +0000 (17:07 +0100)
committerIlias Apalodimas <ilias.apalodimas@linaro.org>
Wed, 11 Feb 2026 10:17:18 +0000 (12:17 +0200)
When boot_idx differs from active_idx at boot time, it indicates a
rollback scenario where the firmware update failed and the system
reverted to the previous working bank. In this case, mark the failed
bank (active_idx) as invalid to prevent future boot attempts from that
bank.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
lib/fwu_updates/fwu.c

index 0f5ef2ba51535fec79c38af1c4df10a136611752..37c613014d18b5ecdec9671943614569edfd75c6 100644 (file)
@@ -766,6 +766,12 @@ static int fwu_boottime_checks(void)
        if (boot_idx != active_idx) {
                log_info("Boot idx %u is not matching active idx %u, changing active_idx\n",
                         boot_idx, active_idx);
+
+               ret = fwu_state_machine_updates(FWU_BANK_INVALID, active_idx);
+               if (ret)
+                       log_err("Unable to set bank %u state as invalid",
+                               active_idx);
+
                ret = fwu_set_active_index(boot_idx);
                if (!ret)
                        boottime_check = 1;