capsule: fwu: transition the platform state on a successful update
Transition the platform to either Trial State or Regular State on a successful update. Do this by calling the fwu_state_machine_updates() API function. For version 1 of the FWU metadata, the transition to Trial State is done by starting the Trial State counter, while for version 2, in addition to the counter, the bank_state field of the FWU metadata is also updated to Valid. For transitioning the platform to Regular State, no action is needed with version 1 of the FWU metadata structure, while for version 2, the bank_state field is set to Accepted. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> Tested-by: Michal Simek <michal.simek@amd.com>
This commit is contained in:
@@ -480,6 +480,11 @@ static __maybe_unused efi_status_t fwu_empty_capsule_process(
|
|||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
log_err("Unable to set the Accept bit for the image %pUs\n",
|
log_err("Unable to set the Accept bit for the image %pUs\n",
|
||||||
image_guid);
|
image_guid);
|
||||||
|
|
||||||
|
status = fwu_state_machine_updates(0, active_idx);
|
||||||
|
if (status < 0)
|
||||||
|
ret = EFI_DEVICE_ERROR;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -521,12 +526,11 @@ static __maybe_unused efi_status_t fwu_post_update_process(bool fw_accept_os)
|
|||||||
log_err("Failed to update FWU metadata index values\n");
|
log_err("Failed to update FWU metadata index values\n");
|
||||||
} else {
|
} else {
|
||||||
log_debug("Successfully updated the active_index\n");
|
log_debug("Successfully updated the active_index\n");
|
||||||
if (fw_accept_os) {
|
status = fwu_state_machine_updates(fw_accept_os ? 1 : 0,
|
||||||
status = fwu_trial_state_ctr_start();
|
update_index);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
ret = EFI_DEVICE_ERROR;
|
ret = EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user