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

Commit 6d89ada3 authored by Shrey Vijay's avatar Shrey Vijay
Browse files

slim-msm: Use non-interruptible method for all QMI wait



Using interruptible wait for QMI transaction can result
in false abortion of wait on task, due to unwanted signal
handling.

To avoid unnecessary signal handling, use non-interruptible
wait for all QMI transaction.

Change-Id: I0da136ed1d3c2d87cc8d23eb4976a80788779283
Signed-off-by: default avatarShrey Vijay <shreyv@codeaurora.org>
parent 31bafe74
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -1689,8 +1689,11 @@ static int msm_slim_qmi_send_power_request(struct msm_slim_ctrl *dev,
	if (rc < 0 || dev->qmi.deferred_resp)
		return rc;

	rc = qmi_txn_wait(temp, SLIM_QMI_RESP_TOUT);
	if (rc < 0) {
	rc = wait_for_completion_timeout(&temp->completion,
					SLIM_QMI_RESP_TOUT);
	qmi_txn_cancel(temp);
	if (!rc) {
		rc = -ETIMEDOUT;
		SLIM_ERR(dev, "%s: QMI TXN wait failed: %d\n", __func__, rc);
		return rc;
	}
@@ -1847,8 +1850,11 @@ int msm_slim_qmi_deferred_status_req(struct msm_slim_ctrl *dev)
		return rc;
	}

	rc = qmi_txn_wait(&txn, SLIM_QMI_RESP_TOUT);
	if (rc < 0) {
	rc = wait_for_completion_timeout(&txn.completion,
					SLIM_QMI_RESP_TOUT);
	qmi_txn_cancel(&txn);
	if (!rc) {
		rc = -ETIMEDOUT;
		SLIM_ERR(dev, "%s: QMI TXN wait failed: %d\n", __func__, rc);
		return rc;
	}
@@ -1861,8 +1867,11 @@ int msm_slim_qmi_deferred_status_req(struct msm_slim_ctrl *dev)
	}

	/* wait for the deferred response */
	rc = qmi_txn_wait(&dev->qmi.deferred_txn, SLIM_QMI_RESP_TOUT);
	if (rc < 0) {
	rc = wait_for_completion_timeout(&dev->qmi.deferred_txn.completion,
					SLIM_QMI_RESP_TOUT);
	qmi_txn_cancel(&dev->qmi.deferred_txn);
	if (!rc) {
		rc = -ETIMEDOUT;
		SLIM_WARN(dev, "slimbus power deferred response not rcvd\n");
		return rc;
	}