lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <PH7PR16MB619627C83309BDCE8BCB952FE5A02@PH7PR16MB6196.namprd16.prod.outlook.com>
Date: Fri, 28 Mar 2025 08:29:13 +0000
From: Avri Altman <Avri.Altman@...disk.com>
To: "Bao D. Nguyen" <quic_nguyenb@...cinc.com>, "quic_cang@...cinc.com"
	<quic_cang@...cinc.com>, "bvanassche@....org" <bvanassche@....org>,
	"avri.altman@....com" <avri.altman@....com>, "peter.wang@...iatek.com"
	<peter.wang@...iatek.com>, "manivannan.sadhasivam@...aro.org"
	<manivannan.sadhasivam@...aro.org>, "minwoo.im@...sung.com"
	<minwoo.im@...sung.com>, "adrian.hunter@...el.com" <adrian.hunter@...el.com>,
	"martin.petersen@...cle.com" <martin.petersen@...cle.com>
CC: "linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>, Alim Akhtar
	<alim.akhtar@...sung.com>, "James E.J. Bottomley"
	<James.Bottomley@...senPartnership.com>, open list
	<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v1 1/1] scsi: ufs: core: Removed
 ufshcd_wb_presrv_usrspc_keep_vcc_on()

> 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@...cinc.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


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ