Re: [PATCH v3 7/8] scsi: ufs: Track system suspend / resume activity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30/09/22 01:00, Bart Van Assche wrote:
> Add a new boolean variable that tracks whether the system is suspending,
> suspended or resuming. This information will be used in a later patch to
> fix a deadlock between the SCSI error handler and the suspend code.
> 
> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>

Reviewed-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>

> ---
>  drivers/ufs/core/ufshcd.c | 2 ++
>  include/ufs/ufshcd.h      | 5 ++++-
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index e8c0504e9e83..5507d93a4bba 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -9253,6 +9253,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;
> @@ -9294,6 +9295,7 @@ static int ufshcd_wl_resume(struct device *dev)
>  		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;
>  }
> diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
> index 9f28349ebcff..96538eb3a6c0 100644
> --- a/include/ufs/ufshcd.h
> +++ b/include/ufs/ufshcd.h
> @@ -802,7 +802,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.
> @@ -943,6 +945,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;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux