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

Commit 2d1537be authored by Subhash Jadavani's avatar Subhash Jadavani
Browse files

scsi: ufs: don't free irq in suspend



If we had called the pm_qos_add_request() with PM QoS request type set to
PM_QOS_REQ_AFFINE_IRQ then freeing up the irq makes the free_irq() to
print out warning with call stack. We don't really need to free up irq
during suspend, disabling it during suspend and reenabling it during
resume should be good enough and that's how it was done on 3.10 kernel
as well.

Change-Id: I58379a05e1f9d5f18b46394d64bdf6f106afa963
Signed-off-by: default avatarSubhash Jadavani <subhashj@codeaurora.org>
parent 4f57554e
Loading
Loading
Loading
Loading
+4 −14
Original line number Diff line number Diff line
@@ -379,26 +379,18 @@ static inline bool ufshcd_valid_tag(struct ufs_hba *hba, int tag)
	return tag >= 0 && tag < hba->nutrs;
}

static inline int ufshcd_enable_irq(struct ufs_hba *hba)
static inline void ufshcd_enable_irq(struct ufs_hba *hba)
{
	int ret = 0;

	if (!hba->is_irq_enabled) {
		ret = request_irq(hba->irq, ufshcd_intr, IRQF_SHARED, UFSHCD,
				hba);
		if (ret)
			dev_err(hba->dev, "%s: request_irq failed, ret=%d\n",
				__func__, ret);
		enable_irq(hba->irq);
		hba->is_irq_enabled = true;
	}

	return ret;
}

static inline void ufshcd_disable_irq(struct ufs_hba *hba)
{
	if (hba->is_irq_enabled) {
		free_irq(hba->irq, hba);
		disable_irq(hba->irq);
		hba->is_irq_enabled = false;
	}
}
@@ -7855,9 +7847,7 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
		goto out;

	/* enable the host irq as host controller would be active soon */
	ret = ufshcd_enable_irq(hba);
	if (ret)
		goto disable_irq_and_vops_clks;
	ufshcd_enable_irq(hba);

	ret = ufshcd_vreg_set_hpm(hba);
	if (ret)