[PATCH V1 3/3] ufs: ufs-qcom: Fix sequential read variance

Nitin Rawat posted 3 patches 2 weeks, 3 days ago
[PATCH V1 3/3] ufs: ufs-qcom: Fix sequential read variance
Posted by Nitin Rawat 2 weeks, 3 days ago
The current devfreq downdifferential threshold of 5% causes overly
aggressive frequency downscaling, leading to performance degradation
sometimes during sequential read workloads.

Update the UFS devfreq downdifferential threshold to 65.
This widens the hysteresis window and prevents overly aggressive
downscaling, ensuring that frequency is maintained for loads above 5%
and scaling down occurs only when utilization falls below this level,
while scale-up still triggers above the 70% threshold.

Signed-off-by: Nitin Rawat <nitin.rawat@oss.qualcomm.com>
---
 drivers/ufs/host/ufs-qcom.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index ab5aed241913..5ef810b95b72 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -1962,7 +1962,7 @@ static void ufs_qcom_config_scaling_param(struct ufs_hba *hba,
 	p->polling_ms = 60;
 	p->timer = DEVFREQ_TIMER_DELAYED;
 	d->upthreshold = 70;
-	d->downdifferential = 5;
+	d->downdifferential = 65;

 	hba->clk_scaling.suspend_on_no_request = true;
 }
--
2.34.1
Re: [PATCH V1 3/3] ufs: ufs-qcom: Fix sequential read variance
Posted by Konrad Dybcio 2 weeks, 3 days ago
On 1/22/26 3:13 PM, Nitin Rawat wrote:
> The current devfreq downdifferential threshold of 5% causes overly
> aggressive frequency downscaling, leading to performance degradation
> sometimes during sequential read workloads.
> 
> Update the UFS devfreq downdifferential threshold to 65.
> This widens the hysteresis window and prevents overly aggressive
> downscaling, ensuring that frequency is maintained for loads above 5%
> and scaling down occurs only when utilization falls below this level,
> while scale-up still triggers above the 70% threshold.
> 
> Signed-off-by: Nitin Rawat <nitin.rawat@oss.qualcomm.com>
> ---
>  drivers/ufs/host/ufs-qcom.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
> index ab5aed241913..5ef810b95b72 100644
> --- a/drivers/ufs/host/ufs-qcom.c
> +++ b/drivers/ufs/host/ufs-qcom.c
> @@ -1962,7 +1962,7 @@ static void ufs_qcom_config_scaling_param(struct ufs_hba *hba,
>  	p->polling_ms = 60;
>  	p->timer = DEVFREQ_TIMER_DELAYED;
>  	d->upthreshold = 70;
> -	d->downdifferential = 5;
> +	d->downdifferential = 65;

FWIW I see this is the value that's been shipping on android for 
quite a while 

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Konrad