[PATCH] scsi: ufs: core: Fix mcq mac configuration

Rohit Ner posted 1 patch 1 year, 9 months ago
drivers/ufs/core/ufs-mcq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] scsi: ufs: core: Fix mcq mac configuration
Posted by Rohit Ner 1 year, 9 months ago
As per JEDEC Standard No. 223E Section 5.9.2,
the max # active commands value programmed by the host sw
in MCQConfig.MAC should be one less than the actual value.

Signed-off-by: Rohit Ner <rohitner@google.com>
---
 drivers/ufs/core/ufs-mcq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index 0787456c2b89..c873fd823942 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -94,7 +94,7 @@ void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds)
 
 	val = ufshcd_readl(hba, REG_UFS_MCQ_CFG);
 	val &= ~MCQ_CFG_MAC_MASK;
-	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds);
+	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds - 1);
 	ufshcd_writel(hba, val, REG_UFS_MCQ_CFG);
 }
 EXPORT_SYMBOL_GPL(ufshcd_mcq_config_mac);
-- 
2.44.0.rc0.258.g7320e95886-goog
Re: [PATCH] scsi: ufs: core: Fix mcq mac configuration
Posted by Martin K. Petersen 1 year, 9 months ago
Rohit,

> As per JEDEC Standard No. 223E Section 5.9.2, the max # active
> commands value programmed by the host sw in MCQConfig.MAC should be
> one less than the actual value.

Applied to 6.9/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering
Re: [PATCH] scsi: ufs: core: Fix mcq mac configuration
Posted by Can Guo 1 year, 9 months ago

On 2/20/2024 5:56 PM, Rohit Ner wrote:
> As per JEDEC Standard No. 223E Section 5.9.2,
> the max # active commands value programmed by the host sw
> in MCQConfig.MAC should be one less than the actual value.
> 
> Signed-off-by: Rohit Ner <rohitner@google.com>
> ---
>   drivers/ufs/core/ufs-mcq.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
> index 0787456c2b89..c873fd823942 100644
> --- a/drivers/ufs/core/ufs-mcq.c
> +++ b/drivers/ufs/core/ufs-mcq.c
> @@ -94,7 +94,7 @@ void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds)
>   
>   	val = ufshcd_readl(hba, REG_UFS_MCQ_CFG);
>   	val &= ~MCQ_CFG_MAC_MASK;
> -	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds);
> +	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds - 1);
>   	ufshcd_writel(hba, val, REG_UFS_MCQ_CFG);
>   }
>   EXPORT_SYMBOL_GPL(ufshcd_mcq_config_mac);

Reviewed-by: Can Guo <quic_cang@quicinc.com>
Re: [PATCH] scsi: ufs: core: Fix mcq mac configuration
Posted by Peter Wang (王信友) 1 year, 9 months ago
On Tue, 2024-02-20 at 01:56 -0800, Rohit Ner wrote:
> As per JEDEC Standard No. 223E Section 5.9.2,
> the max # active commands value programmed by the host sw
> in MCQConfig.MAC should be one less than the actual value.
> 
> Signed-off-by: Rohit Ner <rohitner@google.com>
> ---
>  drivers/ufs/core/ufs-mcq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
> index 0787456c2b89..c873fd823942 100644
> --- a/drivers/ufs/core/ufs-mcq.c
> +++ b/drivers/ufs/core/ufs-mcq.c
> @@ -94,7 +94,7 @@ void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32
> max_active_cmds)
>  
>  	val = ufshcd_readl(hba, REG_UFS_MCQ_CFG);
>  	val &= ~MCQ_CFG_MAC_MASK;
> -	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds);
> +	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds - 1);
>  	ufshcd_writel(hba, val, REG_UFS_MCQ_CFG);
>  }
>  EXPORT_SYMBOL_GPL(ufshcd_mcq_config_mac);


Meidatek host controller MAC_SUPP_MAC setting is 64, which 
should config to 0x3F.


Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Re: [PATCH] scsi: ufs: core: Fix mcq mac configuration
Posted by Bart Van Assche 1 year, 9 months ago
On 2/20/24 01:56, Rohit Ner wrote:
> As per JEDEC Standard No. 223E Section 5.9.2,
> the max # active commands value programmed by the host sw
> in MCQConfig.MAC should be one less than the actual value.
> 
> Signed-off-by: Rohit Ner <rohitner@google.com>
> ---
>   drivers/ufs/core/ufs-mcq.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
> index 0787456c2b89..c873fd823942 100644
> --- a/drivers/ufs/core/ufs-mcq.c
> +++ b/drivers/ufs/core/ufs-mcq.c
> @@ -94,7 +94,7 @@ void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds)
>   
>   	val = ufshcd_readl(hba, REG_UFS_MCQ_CFG);
>   	val &= ~MCQ_CFG_MAC_MASK;
> -	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds);
> +	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds - 1);
>   	ufshcd_writel(hba, val, REG_UFS_MCQ_CFG);
>   }
>   EXPORT_SYMBOL_GPL(ufshcd_mcq_config_mac);

I'd like to hear the feedback from the UFS controller vendors about this patch
since the UFSHCI specification of the MaxActiveCommand controller field is
ambiguous. While the example shows that 32 should be configured as 1Fh, this is
not documented in any other way.

Thanks,

Bart.