From: Abdellatif El Khlifi <[email protected]>

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 <[email protected]>
Cc: Heinrich Schuchardt <[email protected]>
Cc: Sughosh Ganu <[email protected]>
Cc: Tom Rini <[email protected]>
Cc: Ilias Apalodimas <[email protected]>
Cc: Simon Glass <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: Marek Vasut <[email protected]>
Cc: Casey Connolly <[email protected]>
Cc: Adriano Cordova <[email protected]>
---
 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 06b502e2c25..42effd42628 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;
@@ -1375,7 +1377,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 bfbb98c16d7..45d43d424ba 100644
--- a/lib/fwu_updates/fwu.c
+++ b/lib/fwu_updates/fwu.c
@@ -340,6 +340,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) {
@@ -781,7 +786,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.43.0

Reply via email to