From: Abdellatif El Khlifi <abdellatif.elkhl...@arm.com> No need for trial state handling in U-Boot for FWU Arm PSA
In FWU Arm PSA mode, trial state is handled by Secure world. Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhl...@arm.com> Cc: Heinrich Schuchardt <xypron.g...@gmx.de> Cc: Sughosh Ganu <sughosh.g...@linaro.org> Cc: Tom Rini <tr...@konsulko.com> Cc: Ilias Apalodimas <ilias.apalodi...@linaro.org> Cc: Simon Glass <s...@chromium.org> Cc: Michal Simek <michal.si...@amd.com> Cc: Marek Vasut <marek.vasut+rene...@mailbox.org> Cc: Casey Connolly <casey.conno...@linaro.org> Cc: Adriano Cordova <adria...@gmail.com> --- lib/efi_loader/efi_capsule.c | 7 +++++-- lib/fwu_updates/fwu.c | 8 +++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 1dac691d24d..113cfe30fde 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -562,7 +562,9 @@ static efi_status_t efi_capsule_update_firmware( if (IS_ENABLED(CONFIG_FWU_MULTI_BANK_UPDATE)) { if (fwu_empty_capsule(capsule_data)) { if (fwu_empty_capsule_checks_pass()) { - return fwu_empty_capsule_process(capsule_data); + return !IS_ENABLED(CONFIG_FWU_ARM_PSA) ? + fwu_empty_capsule_process(capsule_data) : + 0; } else { log_err("FWU empty capsule checks failed. Cannot start update\n"); return EFI_INVALID_PARAMETER; @@ -1377,7 +1379,8 @@ efi_status_t efi_launch_capsules(void) efi_capsule_scan_done(); - if (IS_ENABLED(CONFIG_FWU_MULTI_BANK_UPDATE)) { + if (IS_ENABLED(CONFIG_FWU_MULTI_BANK_UPDATE) && + !IS_ENABLED(CONFIG_FWU_ARM_PSA)) { if (capsule_update == true && update_status == true) { ret = fwu_post_update_process(fw_accept_os); } else if (capsule_update == true && update_status == false) { diff --git a/lib/fwu_updates/fwu.c b/lib/fwu_updates/fwu.c index 46b6f9356a7..7ae3dfffae2 100644 --- a/lib/fwu_updates/fwu.c +++ b/lib/fwu_updates/fwu.c @@ -345,6 +345,11 @@ int fwu_get_mdata(struct fwu_mdata *mdata) if (parts_ok[i]) continue; + if (IS_ENABLED(CONFIG_FWU_ARM_PSA)) { + log_err("FWU metadata copy %d invalid\n", i); + return -ENOTSYNC; + } + memcpy(parts_mdata[i], parts_mdata[1 - i], mdata_size); err = fwu_sync_mdata(parts_mdata[i], i ? SECONDARY_PART : PRIMARY_PART); if (err) { @@ -786,7 +791,8 @@ static int fwu_boottime_checks(void) in_trial = in_trial_state(); - ret = in_trial ? fwu_trial_count_update() : trial_counter_update(NULL); + ret = (in_trial && !IS_ENABLED(CONFIG_FWU_ARM_PSA)) ? + fwu_trial_count_update() : trial_counter_update(NULL); if (!ret) boottime_check = 1; -- 2.25.1