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)
|
||||
log_err("Unable to set the Accept bit for the image %pUs\n",
|
||||
image_guid);
|
||||
|
||||
status = fwu_state_machine_updates(0, active_idx);
|
||||
if (status < 0)
|
||||
ret = EFI_DEVICE_ERROR;
|
||||
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -521,11 +526,10 @@ static __maybe_unused efi_status_t fwu_post_update_process(bool fw_accept_os)
|
||||
log_err("Failed to update FWU metadata index values\n");
|
||||
} else {
|
||||
log_debug("Successfully updated the active_index\n");
|
||||
if (fw_accept_os) {
|
||||
status = fwu_trial_state_ctr_start();
|
||||
if (status < 0)
|
||||
ret = EFI_DEVICE_ERROR;
|
||||
}
|
||||
status = fwu_state_machine_updates(fw_accept_os ? 1 : 0,
|
||||
update_index);
|
||||
if (status < 0)
|
||||
ret = EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user