]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
firmware: stratix10-svc: change get provision data to async SMC call
authorSiew Chin Lim <elly.siew.chin.lim@intel.com>
Mon, 6 Sep 2021 01:46:21 +0000 (09:46 +0800)
committerDinh Nguyen <dinguyen@kernel.org>
Fri, 1 May 2026 03:40:20 +0000 (22:40 -0500)
Change INTEL_SIP_SMC_FCS_GET_PROVISION_DATA's SMC call to async from sync
to avoid long runtime which may cause the watchdog timeout issue.

Signed-off-by: Richard Gong <richard.gong@intel.com>
Signed-off-by: Siew Chin Lim <elly.siew.chin.lim@intel.com>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
drivers/firmware/stratix10-svc.c
include/linux/firmware/intel/stratix10-smc.h

index 5a76cf3fc83a46385ba0c3b92e5fc4c51585659d..282211d2612bf4eaa801d1db470a3eb65a1d8cb4 100644 (file)
@@ -463,6 +463,7 @@ static void svc_thread_recv_status_ok(struct stratix10_svc_data *p_data,
        case COMMAND_FCS_SEND_CERTIFICATE:
        case COMMAND_FCS_DATA_ENCRYPTION:
        case COMMAND_FCS_DATA_DECRYPTION:
+       case COMMAND_FCS_GET_PROVISION_DATA:
                cb_data->status = BIT(SVC_STATUS_OK);
                break;
        case COMMAND_RECONFIG_DATA_SUBMIT:
@@ -491,7 +492,6 @@ static void svc_thread_recv_status_ok(struct stratix10_svc_data *p_data,
                cb_data->kaddr2 = &res.a2;
                break;
        case COMMAND_FCS_RANDOM_NUMBER_GEN:
-       case COMMAND_FCS_GET_PROVISION_DATA:
        case COMMAND_POLL_SERVICE_STATUS:
                cb_data->status = BIT(SVC_STATUS_OK);
                cb_data->kaddr1 = &res.a1;
@@ -674,7 +674,7 @@ static int svc_normal_to_secure_thread(void *data)
                        break;
                case COMMAND_FCS_GET_PROVISION_DATA:
                        a0 = INTEL_SIP_SMC_FCS_GET_PROVISION_DATA;
-                       a1 = (unsigned long)pdata->paddr;
+                       a1 = 0;
                        a2 = 0;
                        break;
                /* for HWMON */
index 935dba3633b5ba2d559eeb052903456b69babd76..36ea619ea2ad8cd5175245abea415fa57f63b403 100644 (file)
@@ -605,25 +605,21 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
 
 /**
  * Request INTEL_SIP_SMC_FCS_GET_PROVISION_DATA
- * Sync call to dump all the fuses and key hashes
+ * Async call to dump all the fuses and key hashes
  *
  * Call register usage:
  * a0 INTEL_SIP_SMC_FCS_GET_PROVISION_DATA
- * a1 the physical address for firmware to write structure of fuse and
- *    key hashes
- * a2-a7 not used
+ * a1-a7 not used
  *
  * Return status:
  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_FCS_ERROR or
  *      INTEL_SIP_SMC_FCS_REJECTED
- * a1 mailbox error
- * a2 physical address for the structure of fuse and key hashes
- * a3 the size of structure
+ * a1-a3 not used
  *
  */
 #define INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA 94
 #define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \
-       INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)
+       INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)
 
 /**
  * Request INTEL_SIP_SMC_HWMON_READTEMP