Commit f966e02a authored by Peter Wang's avatar Peter Wang Committed by Martin K. Petersen
Browse files

scsi: ufs: core: Fix runtime suspend error deadlock



Resolve the deadlock issue during runtime suspend when an error triggers
the error handler. Prevent the deadlock by checking pm_op_in_progress
and performing a quick recovery.  This approach ensures that the error
handler does not wait indefinitely for runtime PM to resume, allowing
runtime suspend to proceed smoothly.

Signed-off-by: default avatarPeter Wang <peter.wang@mediatek.com>
Suggested-by: default avatarBart Van Assche <bvanassche@acm.org>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Message-Id: <20250926012940.3933367-1-peter.wang@mediatek.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 285654d5
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -6673,6 +6673,14 @@ static void ufshcd_err_handler(struct work_struct *work)
	}
	spin_unlock_irqrestore(hba->host->host_lock, flags);

	ufshcd_rpm_get_noresume(hba);
	if (hba->pm_op_in_progress) {
		ufshcd_link_recovery(hba);
		ufshcd_rpm_put(hba);
		return;
	}
	ufshcd_rpm_put(hba);

	ufshcd_err_handling_prepare(hba);

	spin_lock_irqsave(hba->host->host_lock, flags);