diff mbox series

[v3,1/1] ufs: core: Expand MCQ queue slot to DeviceQueueDepth + 1

Message ID 20231102052426.12006-2-naomi.chu@mediatek.com
State New
Headers show
Series ufs: core: Expand MCQ queue slot to DeviceQueueDepth + 1 | expand

Commit Message

naomi.chu@mediatek.com Nov. 2, 2023, 5:24 a.m. UTC
From: Naomi Chu <naomi.chu@mediatek.com>

The UFSHCI 4.0 specification mandates that there should always be at
least one empty slot in each queue for distinguishing between full and
empty states. Enlarge the `hwq->max_entries` to `DeviceQueueDepth +1`
to allow UFSHCI 4.0 controllers to fully utilize MCQ queue slots.

Fixes: 4682abfae2eb ("scsi: ufs: core: mcq: Allocate memory for MCQ mode")
Signed-off-by: Naomi Chu <naomi.chu@mediatek.com>
---
 drivers/ufs/core/ufs-mcq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Stanley Jhu Nov. 2, 2023, 1:23 p.m. UTC | #1
On Thu, Nov 2, 2023 at 2:26 PM <naomi.chu@mediatek.com> wrote:
>
> From: Naomi Chu <naomi.chu@mediatek.com>
>
> The UFSHCI 4.0 specification mandates that there should always be at
> least one empty slot in each queue for distinguishing between full and
> empty states. Enlarge the `hwq->max_entries` to `DeviceQueueDepth +1`
> to allow UFSHCI 4.0 controllers to fully utilize MCQ queue slots.
>
> Fixes: 4682abfae2eb ("scsi: ufs: core: mcq: Allocate memory for MCQ mode")
> Signed-off-by: Naomi Chu <naomi.chu@mediatek.com>
> ---
>  drivers/ufs/core/ufs-mcq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Bart Van Assche Nov. 2, 2023, 7:15 p.m. UTC | #2
On 11/2/23 09:37, Manivannan Sadhasivam wrote:
> Where is the changelog?

I think it's here: 
https://lore.kernel.org/linux-scsi/20231102052426.12006-1-naomi.chu@mediatek.com/

Bart.
Peter Wang (王信友) Nov. 3, 2023, 2:19 a.m. UTC | #3
On Thu, 2023-11-02 at 13:24 +0800, naomi.chu@mediatek.com wrote:
> From: Naomi Chu <naomi.chu@mediatek.com>
> 
> The UFSHCI 4.0 specification mandates that there should always be at
> least one empty slot in each queue for distinguishing between full
> and
> empty states. Enlarge the `hwq->max_entries` to `DeviceQueueDepth +1`
> to allow UFSHCI 4.0 controllers to fully utilize MCQ queue slots.
> 
> 

Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Chun-Hung Wu (巫駿宏) Nov. 3, 2023, 2:35 a.m. UTC | #4
On Thu, 2023-11-02 at 13:24 +0800, naomi.chu@mediatek.com wrote:
> From: Naomi Chu <naomi.chu@mediatek.com>
> 
> The UFSHCI 4.0 specification mandates that there should always be at
> least one empty slot in each queue for distinguishing between full
> and
> empty states. Enlarge the `hwq->max_entries` to `DeviceQueueDepth +1`
> to allow UFSHCI 4.0 controllers to fully utilize MCQ queue slots.
> 
> Fixes: 4682abfae2eb ("scsi: ufs: core: mcq: Allocate memory for MCQ
> mode")
> Signed-off-by: Naomi Chu <naomi.chu@mediatek.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 2ba8ec254dce..5c75ab9d6bb5 100644
> --- a/drivers/ufs/core/ufs-mcq.c
> +++ b/drivers/ufs/core/ufs-mcq.c
> @@ -436,7 +436,7 @@ int ufshcd_mcq_init(struct ufs_hba *hba)
>  
>  	for (i = 0; i < hba->nr_hw_queues; i++) {
>  		hwq = &hba->uhq[i];
> -		hwq->max_entries = hba->nutrs;
> +		hwq->max_entries = hba->nutrs + 1;
>  		spin_lock_init(&hwq->sq_lock);
>  		spin_lock_init(&hwq->cq_lock);
>  		mutex_init(&hwq->sq_mutex);
> -- 
> 2.18.0
> 

Reviewed-by: Chun-Hung<chun-hung.wu@mediatek.com>
Martin K. Petersen Nov. 9, 2023, 2:35 a.m. UTC | #5
> The UFSHCI 4.0 specification mandates that there should always be at
> least one empty slot in each queue for distinguishing between full and
> empty states. Enlarge the `hwq->max_entries` to `DeviceQueueDepth +1`
> to allow UFSHCI 4.0 controllers to fully utilize MCQ queue slots.

Applied to 6.7/scsi-staging, thanks!
diff mbox series

Patch

diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index 2ba8ec254dce..5c75ab9d6bb5 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -436,7 +436,7 @@  int ufshcd_mcq_init(struct ufs_hba *hba)
 
 	for (i = 0; i < hba->nr_hw_queues; i++) {
 		hwq = &hba->uhq[i];
-		hwq->max_entries = hba->nutrs;
+		hwq->max_entries = hba->nutrs + 1;
 		spin_lock_init(&hwq->sq_lock);
 		spin_lock_init(&hwq->cq_lock);
 		mutex_init(&hwq->sq_mutex);