mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
FROMGIT: scsi: ufs: Track system suspend / resume activity
Add a new boolean variable that tracks whether the system is suspending,
suspended or resuming. This information will be used in a later commit to
fix a deadlock between the SCSI error handler and the suspend code.
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Change-Id: I8a1e6595ff3808cfab1789f9d2ead0cbd405b279
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221018202958.1902564-9-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 1a547cbc6f git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
committed by
Alistair Delva
parent
dbe3c56ed4
commit
5df163fd2c
@@ -9329,6 +9329,7 @@ static int ufshcd_wl_suspend(struct device *dev)
|
||||
|
||||
hba = shost_priv(sdev->host);
|
||||
down(&hba->host_sem);
|
||||
hba->system_suspending = true;
|
||||
|
||||
if (pm_runtime_suspended(dev))
|
||||
goto out;
|
||||
@@ -9370,6 +9371,7 @@ out:
|
||||
hba->curr_dev_pwr_mode, hba->uic_link_state);
|
||||
if (!ret)
|
||||
hba->is_sys_suspended = false;
|
||||
hba->system_suspending = false;
|
||||
up(&hba->host_sem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -838,7 +838,9 @@ struct ufs_hba_monitor {
|
||||
* @caps: bitmask with information about UFS controller capabilities
|
||||
* @devfreq: frequency scaling information owned by the devfreq core
|
||||
* @clk_scaling: frequency scaling information owned by the UFS driver
|
||||
* @is_sys_suspended: whether or not the entire system has been suspended
|
||||
* @system_suspending: system suspend has been started and system resume has
|
||||
* not yet finished.
|
||||
* @is_sys_suspended: UFS device has been suspended because of system suspend
|
||||
* @urgent_bkops_lvl: keeps track of urgent bkops level for device
|
||||
* @is_urgent_bkops_lvl_checked: keeps track if the urgent bkops level for
|
||||
* device is known or not.
|
||||
@@ -980,6 +982,7 @@ struct ufs_hba {
|
||||
|
||||
struct devfreq *devfreq;
|
||||
struct ufs_clk_scaling clk_scaling;
|
||||
bool system_suspending;
|
||||
bool is_sys_suspended;
|
||||
|
||||
enum bkops_status urgent_bkops_lvl;
|
||||
|
||||
Reference in New Issue
Block a user