All of lore.kernel.org
 help / color / mirror / Atom feed
From: Can Guo <cang@codeaurora.org>
To: jaegeuk@kernel.org
Cc: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
	kernel-team@android.com, Alim Akhtar <alim.akhtar@samsung.com>,
	Avri Altman <avri.altman@wdc.com>
Subject: Re: [PATCH v2] scsi: ufs: fix clkgating on/off correctly
Date: Tue, 20 Oct 2020 18:57:38 +0800	[thread overview]
Message-ID: <5a59c4c4ec0959223fe0e879f2dd9d91@codeaurora.org> (raw)
In-Reply-To: <20201016211826.GA3441410@google.com>

On 2020-10-17 05:18, jaegeuk@kernel.org wrote:
> The below call stack prevents clk_gating at every IO completion.
> We can remove the condition, ufshcd_any_tag_in_use(), since 
> clkgating_work
> will check it again.
> 
> ufshcd_complete_requests(struct ufs_hba *hba)
>   ufshcd_transfer_req_compl()
>     __ufshcd_transfer_req_compl()
>       __ufshcd_release(hba)
>         if (ufshcd_any_tag_in_use() == 1)
>            return;
>   ufshcd_tmc_handler(hba);
>     blk_mq_tagset_busy_iter();
> 
> In addition, we have to avoid gate_work, if it was disabled.
> 
> Cc: Alim Akhtar <alim.akhtar@samsung.com>
> Cc: Avri Altman <avri.altman@wdc.com>
> Cc: Can Guo <cang@codeaurora.org>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> 
> Change log from v1:
>  - change the patch subject
>  - fix clkgate.is_enable to work
> 
>  drivers/scsi/ufs/ufshcd.c | 5 +++--
>  drivers/scsi/ufs/ufshcd.h | 5 +++++
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index a2db8182663d..75e8a76f20c7 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -1729,9 +1729,10 @@ static void __ufshcd_release(struct ufs_hba 
> *hba)
> 
>  	if (hba->clk_gating.active_reqs || hba->clk_gating.is_suspended
>  		|| hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL
> -		|| ufshcd_any_tag_in_use(hba) || hba->outstanding_tasks
> +		|| hba->outstanding_tasks
>  		|| hba->active_uic_cmd || hba->uic_async_done
> -		|| ufshcd_eh_in_progress(hba))
> +		|| ufshcd_eh_in_progress(hba)
> +		|| ufshcd_is_clkgating_enabled(hba))

I guess you want it to be "!ufshcd_is_clkgating_enabled(hba)" - if
clk gating is enabled, we should let gating happen but not bail, right?

That said, I don't think we need to check whether clk gating is enabled 
or
not here, since ufshcd_clkgating_store() manipulates 
clk_gating->active_reqs
in an atomic way. If someone disables clk gating -> 
clk_gating->active_reqs++,
this check becomes TURE on the very first condition.

So the very fisrt patch looks better to me.

Thanks,

Can Guo.

>  		return;
> 
>  	hba->clk_gating.state = REQ_CLKS_OFF;
> diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
> index 8344d8cb3678..09e59cb86e69 100644
> --- a/drivers/scsi/ufs/ufshcd.h
> +++ b/drivers/scsi/ufs/ufshcd.h
> @@ -814,6 +814,11 @@ static inline bool
> ufshcd_is_auto_hibern8_supported(struct ufs_hba *hba)
>  		!(hba->quirks & UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8);
>  }
> 
> +static inline bool ufshcd_is_clkgating_enabled(struct ufs_hba *hba)
> +{
> +	return hba->clk_gating.is_enabled;
> +}
> +
>  static inline bool ufshcd_is_auto_hibern8_enabled(struct ufs_hba *hba)
>  {
>  	return FIELD_GET(UFSHCI_AHIBERN8_TIMER_MASK, hba->ahit) ? true : 
> false;

  parent reply	other threads:[~2020-10-20 10:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-16  6:02 [PATCH] scsi: ufs: fix no clkgating due to tag being alive Jaegeuk Kim
2020-10-16 21:18 ` [PATCH v2] scsi: ufs: fix clkgating on/off correctly jaegeuk
2020-10-19  9:18   ` Can Guo
2020-10-20 10:57   ` Can Guo [this message]
2020-10-20 19:17     ` jaegeuk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5a59c4c4ec0959223fe0e879f2dd9d91@codeaurora.org \
    --to=cang@codeaurora.org \
    --cc=alim.akhtar@samsung.com \
    --cc=avri.altman@wdc.com \
    --cc=jaegeuk@kernel.org \
    --cc=kernel-team@android.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.