Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67951e4d authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qseecom: retry scm call if app is busy"

parents a92cfc31 de5f115d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -470,6 +470,8 @@ static void __qseecom_free_coherent_buf(uint32_t size,
#define QSEECOM_SCM_EBUSY_WAIT_MS 30
#define QSEECOM_SCM_EBUSY_MAX_RETRY 67

#define QSEE_RESULT_FAIL_APP_BUSY 315

static int __qseecom_scm_call2_locked(uint32_t smc_id, struct scm_desc *desc)
{
	int ret = 0;
@@ -477,14 +479,14 @@ static int __qseecom_scm_call2_locked(uint32_t smc_id, struct scm_desc *desc)

	do {
		ret = qcom_scm_qseecom_call_noretry(smc_id, desc);
		if (ret == -EBUSY) {
		if ((ret == -EBUSY) || (desc && (desc->ret[0] == -QSEE_RESULT_FAIL_APP_BUSY))) {
			mutex_unlock(&app_access_lock);
			msleep(QSEECOM_SCM_EBUSY_WAIT_MS);
			mutex_lock(&app_access_lock);
		}
		if (retry_count == 33)
			pr_warn("secure world has been busy for 1 second!\n");
	} while (ret == -EBUSY &&
	} while (((ret == -EBUSY) || (desc && (desc->ret[0] == -QSEE_RESULT_FAIL_APP_BUSY))) &&
			(retry_count++ < QSEECOM_SCM_EBUSY_MAX_RETRY));
	return ret;
}