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>
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;