* [PATCH v1 1/1] scsi: ufs: core: Removed ufshcd_wb_presrv_usrspc_keep_vcc_on()
@ 2025-03-27 6:38 Bao D. Nguyen
2025-03-28 8:29 ` Avri Altman
0 siblings, 1 reply; 4+ messages in thread
From: Bao D. Nguyen @ 2025-03-27 6:38 UTC (permalink / raw)
To: quic_cang, bvanassche, avri.altman, peter.wang,
manivannan.sadhasivam, minwoo.im, adrian.hunter, martin.petersen
Cc: linux-scsi, Bao D. Nguyen, Alim Akhtar, James E.J. Bottomley, open list
Merge the ufshcd_wb_presrv_usrspc_keep_vcc_on() function
into ufshcd_wb_need_flush(). The "_keep_vcc_on" part of the
function name is misleading. The function definition may be
deviated from its original intention. This is a small function
only invoked by the ufshcd_wb_need_flush(). To improve the
readability, remove this function and merge its content
into its caller. There is no change to the functionality.
Signed-off-by: Bao D. Nguyen <quic_nguyenb@quicinc.com>
---
drivers/ufs/core/ufshcd.c | 53 +++++++++++++++++++----------------------------
1 file changed, 21 insertions(+), 32 deletions(-)
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 4e1e214..b9272b1 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -6083,32 +6083,6 @@ int ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable)
return ret;
}
-static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
- u32 avail_buf)
-{
- u32 cur_buf;
- int ret;
- u8 index;
-
- index = ufshcd_wb_get_query_index(hba);
- ret = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR,
- QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE,
- index, 0, &cur_buf);
- if (ret) {
- dev_err(hba->dev, "%s: dCurWriteBoosterBufferSize read failed %d\n",
- __func__, ret);
- return false;
- }
-
- if (!cur_buf) {
- dev_info(hba->dev, "dCurWBBuf: %d WB disabled until free-space is available\n",
- cur_buf);
- return false;
- }
- /* Let it continue to flush when available buffer exceeds threshold */
- return avail_buf < hba->vps->wb_flush_threshold;
-}
-
static void ufshcd_wb_force_disable(struct ufs_hba *hba)
{
if (ufshcd_is_wb_buf_flush_allowed(hba))
@@ -6152,9 +6126,9 @@ static bool ufshcd_is_wb_buf_lifetime_available(struct ufs_hba *hba)
static bool ufshcd_wb_need_flush(struct ufs_hba *hba)
{
- int ret;
- u32 avail_buf;
+ u32 avail_buf, cur_buf;
u8 index;
+ int ret;
if (!ufshcd_is_wb_allowed(hba))
return false;
@@ -6165,15 +6139,13 @@ static bool ufshcd_wb_need_flush(struct ufs_hba *hba)
}
/*
- * The ufs device needs the vcc to be ON to flush.
* With user-space reduction enabled, it's enough to enable flush
* by checking only the available buffer. The threshold
* defined here is > 90% full.
* With user-space preserved enabled, the current-buffer
* should be checked too because the wb buffer size can reduce
* when disk tends to be full. This info is provided by current
- * buffer (dCurrentWriteBoosterBufferSize). There's no point in
- * keeping vcc on when current buffer is empty.
+ * buffer (dCurrentWriteBoosterBufferSize).
*/
index = ufshcd_wb_get_query_index(hba);
ret = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR,
@@ -6188,7 +6160,24 @@ static bool ufshcd_wb_need_flush(struct ufs_hba *hba)
if (!hba->dev_info.b_presrv_uspc_en)
return avail_buf <= UFS_WB_BUF_REMAIN_PERCENT(10);
- return ufshcd_wb_presrv_usrspc_keep_vcc_on(hba, avail_buf);
+ index = ufshcd_wb_get_query_index(hba);
+ ret = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR,
+ QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE,
+ index, 0, &cur_buf);
+ if (ret) {
+ dev_err(hba->dev, "%s: dCurWriteBoosterBufferSize read failed %d\n",
+ __func__, ret);
+ return false;
+ }
+
+ if (!cur_buf) {
+ dev_info(hba->dev, "dCurWBBuf: %d WB disabled until free-space is available\n",
+ cur_buf);
+ return false;
+ }
+
+ /* Let it continue to flush when available buffer exceeds threshold */
+ return avail_buf < hba->vps->wb_flush_threshold;
}
static void ufshcd_rpm_dev_flush_recheck_work(struct work_struct *work)
--
2.7.4
^ permalink raw reply [flat|nested] 4+ messages in thread* RE: [PATCH v1 1/1] scsi: ufs: core: Removed ufshcd_wb_presrv_usrspc_keep_vcc_on()
2025-03-27 6:38 [PATCH v1 1/1] scsi: ufs: core: Removed ufshcd_wb_presrv_usrspc_keep_vcc_on() Bao D. Nguyen
@ 2025-03-28 8:29 ` Avri Altman
2025-03-28 19:33 ` Bart Van Assche
0 siblings, 1 reply; 4+ messages in thread
From: Avri Altman @ 2025-03-28 8:29 UTC (permalink / raw)
To: Bao D. Nguyen, quic_cang, bvanassche, avri.altman, peter.wang,
manivannan.sadhasivam, minwoo.im, adrian.hunter, martin.petersen
Cc: linux-scsi, Alim Akhtar, James E.J. Bottomley, open list
> Merge the ufshcd_wb_presrv_usrspc_keep_vcc_on() function into
> ufshcd_wb_need_flush(). The "_keep_vcc_on" part of the function name is
> misleading. The function definition may be deviated from its original intention.
> This is a small function only invoked by the ufshcd_wb_need_flush(). To
> improve the readability, remove this function and merge its content into its
> caller. There is no change to the functionality.
>
> Signed-off-by: Bao D. Nguyen <quic_nguyenb@quicinc.com>
> ---
> drivers/ufs/core/ufshcd.c | 53 +++++++++++++++++++--------------------------
> --
> 1 file changed, 21 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index
> 4e1e214..b9272b1 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -6083,32 +6083,6 @@ int ufshcd_wb_toggle_buf_flush(struct ufs_hba
> *hba, bool enable)
> return ret;
> }
>
> -static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
> - u32 avail_buf)
Maybe just change the function name to better describe what it does,
e.g. ufshcd_wb_exceed_threshold ?
Thanks,
Avri
> -{
> - u32 cur_buf;
> - int ret;
> - u8 index;
> -
> - index = ufshcd_wb_get_query_index(hba);
> - ret = ufshcd_query_attr_retry(hba,
> UPIU_QUERY_OPCODE_READ_ATTR,
> -
> QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE,
> - index, 0, &cur_buf);
> - if (ret) {
> - dev_err(hba->dev, "%s: dCurWriteBoosterBufferSize read
> failed %d\n",
> - __func__, ret);
> - return false;
> - }
> -
> - if (!cur_buf) {
> - dev_info(hba->dev, "dCurWBBuf: %d WB disabled until free-
> space is available\n",
> - cur_buf);
> - return false;
> - }
> - /* Let it continue to flush when available buffer exceeds threshold */
> - return avail_buf < hba->vps->wb_flush_threshold;
> -}
> -
> static void ufshcd_wb_force_disable(struct ufs_hba *hba) {
> if (ufshcd_is_wb_buf_flush_allowed(hba))
> @@ -6152,9 +6126,9 @@ static bool
> ufshcd_is_wb_buf_lifetime_available(struct ufs_hba *hba)
>
> static bool ufshcd_wb_need_flush(struct ufs_hba *hba) {
> - int ret;
> - u32 avail_buf;
> + u32 avail_buf, cur_buf;
> u8 index;
> + int ret;
>
> if (!ufshcd_is_wb_allowed(hba))
> return false;
> @@ -6165,15 +6139,13 @@ static bool ufshcd_wb_need_flush(struct
> ufs_hba *hba)
> }
>
> /*
> - * The ufs device needs the vcc to be ON to flush.
> * With user-space reduction enabled, it's enough to enable flush
> * by checking only the available buffer. The threshold
> * defined here is > 90% full.
> * With user-space preserved enabled, the current-buffer
> * should be checked too because the wb buffer size can reduce
> * when disk tends to be full. This info is provided by current
> - * buffer (dCurrentWriteBoosterBufferSize). There's no point in
> - * keeping vcc on when current buffer is empty.
> + * buffer (dCurrentWriteBoosterBufferSize).
> */
> index = ufshcd_wb_get_query_index(hba);
> ret = ufshcd_query_attr_retry(hba,
> UPIU_QUERY_OPCODE_READ_ATTR, @@ -6188,7 +6160,24 @@ static bool
> ufshcd_wb_need_flush(struct ufs_hba *hba)
> if (!hba->dev_info.b_presrv_uspc_en)
> return avail_buf <= UFS_WB_BUF_REMAIN_PERCENT(10);
>
> - return ufshcd_wb_presrv_usrspc_keep_vcc_on(hba, avail_buf);
> + index = ufshcd_wb_get_query_index(hba);
> + ret = ufshcd_query_attr_retry(hba,
> UPIU_QUERY_OPCODE_READ_ATTR,
> + QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE,
> + index, 0, &cur_buf);
> + if (ret) {
> + dev_err(hba->dev, "%s: dCurWriteBoosterBufferSize read
> failed %d\n",
> + __func__, ret);
> + return false;
> + }
> +
> + if (!cur_buf) {
> + dev_info(hba->dev, "dCurWBBuf: %d WB disabled until free-
> space is available\n",
> + cur_buf);
> + return false;
> + }
> +
> + /* Let it continue to flush when available buffer exceeds threshold */
> + return avail_buf < hba->vps->wb_flush_threshold;
> }
>
> static void ufshcd_rpm_dev_flush_recheck_work(struct work_struct *work)
> --
> 2.7.4
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v1 1/1] scsi: ufs: core: Removed ufshcd_wb_presrv_usrspc_keep_vcc_on()
2025-03-28 8:29 ` Avri Altman
@ 2025-03-28 19:33 ` Bart Van Assche
2025-03-28 19:39 ` Bao D. Nguyen
0 siblings, 1 reply; 4+ messages in thread
From: Bart Van Assche @ 2025-03-28 19:33 UTC (permalink / raw)
To: Avri Altman, Bao D. Nguyen, quic_cang, avri.altman, peter.wang,
manivannan.sadhasivam, minwoo.im, adrian.hunter, martin.petersen
Cc: linux-scsi, Alim Akhtar, James E.J. Bottomley, open list
On 3/28/25 1:29 AM, Avri Altman wrote:
> Maybe just change the function name to better describe what it does,
> e.g. ufshcd_wb_exceed_threshold ?
I'm also in favor of renaming ufshcd_wb_presrv_usrspc_keep_vcc_on()
instead of inlining it.
Thanks,
Bart.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v1 1/1] scsi: ufs: core: Removed ufshcd_wb_presrv_usrspc_keep_vcc_on()
2025-03-28 19:33 ` Bart Van Assche
@ 2025-03-28 19:39 ` Bao D. Nguyen
0 siblings, 0 replies; 4+ messages in thread
From: Bao D. Nguyen @ 2025-03-28 19:39 UTC (permalink / raw)
To: Bart Van Assche, Avri Altman, quic_cang, avri.altman, peter.wang,
manivannan.sadhasivam, minwoo.im, adrian.hunter, martin.petersen
Cc: linux-scsi, Alim Akhtar, James E.J. Bottomley, open list
On 3/28/2025 12:33 PM, Bart Van Assche wrote:
> On 3/28/25 1:29 AM, Avri Altman wrote:
>> Maybe just change the function name to better describe what it does,
>> e.g. ufshcd_wb_exceed_threshold ?
>
> I'm also in favor of renaming ufshcd_wb_presrv_usrspc_keep_vcc_on()
> instead of inlining it.
>
Thank you both. I will update.
Thanks, Bao
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-03-28 19:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-27 6:38 [PATCH v1 1/1] scsi: ufs: core: Removed ufshcd_wb_presrv_usrspc_keep_vcc_on() Bao D. Nguyen
2025-03-28 8:29 ` Avri Altman
2025-03-28 19:33 ` Bart Van Assche
2025-03-28 19:39 ` Bao D. Nguyen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®