* [PATCH v6 0/3] Several UFS MCQ Code Changes
@ 2023-05-04 15:44 Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 1/3] scsi: ufs: core: Fix mcq tag calcualtion Po-Wen Kao
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Po-Wen Kao @ 2023-05-04 15:44 UTC (permalink / raw)
To: linux-scsi, linux-kernel, linux-arm-kernel, linux-mediatek,
Matthias Brugger, AngeloGioacchino Del Regno
Cc: wsd_upstream, peter.wang, stanley.chu, powen.kao, alice.chao,
naomi.chu, chun-hung.wu, cc.chou, eddie.huang
v5 -> v6
- Also fix call to sizeof_utp_transfer_cmd_desc() in
`ufshcd_release_sdb_queue()` as suggested by Stanley Chu
v4 -> v5
- Send MTK driver MCQ support as independent patch and address Bart's
comment there
"[PATCH v1 0/2] Add MCQ support for MTK platform"
v3 -> v4
- Rebase on latest scsi-next/staging
- Drop "scsi: ufs: core: Remove redundant check" since it's already fixed
- Improve commit message as suggested by Manivannan Sadhasivam
- Fix patch check error
v2 -> v3
- Remove "scsi: ufs: core: Add hwq print for debug".
send later when error handling is ready.
- Rename patch title to match convention "scsi: ufs: ufs-mediatek:..."
- Add explanation for (nr_hw_queues = MAXQ + 1)
- Remove dummy line
v1 -> v2:
- Add 2 new patches
- Update MTK driver for mcq
- Export symbols for MTK driver
- Fix commit message in "scsi: ufs: core: Fix mcq nr_hw_queues"
- Split name change and fix into two patches
Po-Wen Kao (3):
scsi: ufs: core: Fix mcq tag calcualtion
scsi: ufs: core: Rename symbol sizeof_utp_transfer_cmd_desc()
scsi: ufs: core: Fix mcq nr_hw_queues
drivers/ufs/core/ufs-mcq.c | 5 +++--
drivers/ufs/core/ufshcd.c | 10 +++++-----
include/ufs/ufshcd.h | 2 +-
3 files changed, 9 insertions(+), 8 deletions(-)
--
2.18.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v6 1/3] scsi: ufs: core: Fix mcq tag calcualtion
2023-05-04 15:44 [PATCH v6 0/3] Several UFS MCQ Code Changes Po-Wen Kao
@ 2023-05-04 15:44 ` Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 2/3] scsi: ufs: core: Rename symbol sizeof_utp_transfer_cmd_desc() Po-Wen Kao
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Po-Wen Kao @ 2023-05-04 15:44 UTC (permalink / raw)
To: linux-scsi, linux-kernel, linux-arm-kernel, linux-mediatek,
Alim Akhtar, Avri Altman, Bart Van Assche, James E.J. Bottomley,
Martin K. Petersen, Matthias Brugger, AngeloGioacchino Del Regno
Cc: wsd_upstream, peter.wang, stanley.chu, powen.kao, alice.chao,
naomi.chu, chun-hung.wu, cc.chou, eddie.huang
Transfer command descriptor is allocated in ufshcd_memory_alloc()
and referenced by transfer request descriptor with stride size
sizeof_utp_transfer_cmd_desc()
instead of
sizeof(struct utp_transfer_cmd_desc).
Consequently, computing tag by address offset should also refer to the
same stride.
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Ziqi Chen <quic_ziqichen@quicinc.com>
---
drivers/ufs/core/ufs-mcq.c | 2 +-
drivers/ufs/core/ufshcd.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index 202ff71e1b58..b7c5f39b50e6 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -265,7 +265,7 @@ static int ufshcd_mcq_get_tag(struct ufs_hba *hba,
addr = (le64_to_cpu(cqe->command_desc_base_addr) & CQE_UCD_BA) -
hba->ucdl_dma_addr;
- return div_u64(addr, sizeof(struct utp_transfer_cmd_desc));
+ return div_u64(addr, sizeof_utp_transfer_cmd_desc(hba));
}
static void ufshcd_mcq_process_cqe(struct ufs_hba *hba,
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 17d7bb875fee..6c4ae32a1c49 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -8452,7 +8452,7 @@ static void ufshcd_release_sdb_queue(struct ufs_hba *hba, int nutrs)
{
size_t ucdl_size, utrdl_size;
- ucdl_size = sizeof(struct utp_transfer_cmd_desc) * nutrs;
+ ucdl_size = sizeof_utp_transfer_cmd_desc(hba) * nutrs;
dmam_free_coherent(hba->dev, ucdl_size, hba->ucdl_base_addr,
hba->ucdl_dma_addr);
--
2.18.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v6 2/3] scsi: ufs: core: Rename symbol sizeof_utp_transfer_cmd_desc()
2023-05-04 15:44 [PATCH v6 0/3] Several UFS MCQ Code Changes Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 1/3] scsi: ufs: core: Fix mcq tag calcualtion Po-Wen Kao
@ 2023-05-04 15:44 ` Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 3/3] scsi: ufs: core: Fix mcq nr_hw_queues Po-Wen Kao
2023-05-17 2:13 ` [PATCH v6 0/3] Several UFS MCQ Code Changes Martin K. Petersen
3 siblings, 0 replies; 5+ messages in thread
From: Po-Wen Kao @ 2023-05-04 15:44 UTC (permalink / raw)
To: linux-scsi, linux-kernel, linux-arm-kernel, linux-mediatek,
Alim Akhtar, Avri Altman, Bart Van Assche, James E.J. Bottomley,
Martin K. Petersen, Matthias Brugger, AngeloGioacchino Del Regno
Cc: wsd_upstream, peter.wang, stanley.chu, powen.kao, alice.chao,
naomi.chu, chun-hung.wu, cc.chou, eddie.huang
Naming the functions after standard operators like sizeof may cause
confusion. So let's rename it to ufshcd_get_ucd_size().
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Suggested-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Ziqi Chen <quic_ziqichen@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
---
drivers/ufs/core/ufs-mcq.c | 2 +-
drivers/ufs/core/ufshcd.c | 10 +++++-----
include/ufs/ufshcd.h | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index b7c5f39b50e6..937933d3f77c 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -265,7 +265,7 @@ static int ufshcd_mcq_get_tag(struct ufs_hba *hba,
addr = (le64_to_cpu(cqe->command_desc_base_addr) & CQE_UCD_BA) -
hba->ucdl_dma_addr;
- return div_u64(addr, sizeof_utp_transfer_cmd_desc(hba));
+ return div_u64(addr, ufshcd_get_ucd_size(hba));
}
static void ufshcd_mcq_process_cqe(struct ufs_hba *hba,
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 6c4ae32a1c49..3ef650317357 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -2849,10 +2849,10 @@ static void ufshcd_map_queues(struct Scsi_Host *shost)
static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
{
struct utp_transfer_cmd_desc *cmd_descp = (void *)hba->ucdl_base_addr +
- i * sizeof_utp_transfer_cmd_desc(hba);
+ i * ufshcd_get_ucd_size(hba);
struct utp_transfer_req_desc *utrdlp = hba->utrdl_base_addr;
dma_addr_t cmd_desc_element_addr = hba->ucdl_dma_addr +
- i * sizeof_utp_transfer_cmd_desc(hba);
+ i * ufshcd_get_ucd_size(hba);
u16 response_offset = offsetof(struct utp_transfer_cmd_desc,
response_upiu);
u16 prdt_offset = offsetof(struct utp_transfer_cmd_desc, prd_table);
@@ -3761,7 +3761,7 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
size_t utmrdl_size, utrdl_size, ucdl_size;
/* Allocate memory for UTP command descriptors */
- ucdl_size = sizeof_utp_transfer_cmd_desc(hba) * hba->nutrs;
+ ucdl_size = ufshcd_get_ucd_size(hba) * hba->nutrs;
hba->ucdl_base_addr = dmam_alloc_coherent(hba->dev,
ucdl_size,
&hba->ucdl_dma_addr,
@@ -3861,7 +3861,7 @@ static void ufshcd_host_memory_configure(struct ufs_hba *hba)
prdt_offset =
offsetof(struct utp_transfer_cmd_desc, prd_table);
- cmd_desc_size = sizeof_utp_transfer_cmd_desc(hba);
+ cmd_desc_size = ufshcd_get_ucd_size(hba);
cmd_desc_dma_addr = hba->ucdl_dma_addr;
for (i = 0; i < hba->nutrs; i++) {
@@ -8452,7 +8452,7 @@ static void ufshcd_release_sdb_queue(struct ufs_hba *hba, int nutrs)
{
size_t ucdl_size, utrdl_size;
- ucdl_size = sizeof_utp_transfer_cmd_desc(hba) * nutrs;
+ ucdl_size = ufshcd_get_ucd_size(hba) * nutrs;
dmam_free_coherent(hba->dev, ucdl_size, hba->ucdl_base_addr,
hba->ucdl_dma_addr);
diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
index f7553293ba98..df1d04f7a542 100644
--- a/include/ufs/ufshcd.h
+++ b/include/ufs/ufshcd.h
@@ -1133,7 +1133,7 @@ static inline size_t ufshcd_sg_entry_size(const struct ufs_hba *hba)
({ (void)(hba); BUILD_BUG_ON(sg_entry_size != sizeof(struct ufshcd_sg_entry)); })
#endif
-static inline size_t sizeof_utp_transfer_cmd_desc(const struct ufs_hba *hba)
+static inline size_t ufshcd_get_ucd_size(const struct ufs_hba *hba)
{
return sizeof(struct utp_transfer_cmd_desc) + SG_ALL * ufshcd_sg_entry_size(hba);
}
--
2.18.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v6 3/3] scsi: ufs: core: Fix mcq nr_hw_queues
2023-05-04 15:44 [PATCH v6 0/3] Several UFS MCQ Code Changes Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 1/3] scsi: ufs: core: Fix mcq tag calcualtion Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 2/3] scsi: ufs: core: Rename symbol sizeof_utp_transfer_cmd_desc() Po-Wen Kao
@ 2023-05-04 15:44 ` Po-Wen Kao
2023-05-17 2:13 ` [PATCH v6 0/3] Several UFS MCQ Code Changes Martin K. Petersen
3 siblings, 0 replies; 5+ messages in thread
From: Po-Wen Kao @ 2023-05-04 15:44 UTC (permalink / raw)
To: linux-scsi, linux-kernel, linux-arm-kernel, linux-mediatek,
Alim Akhtar, Avri Altman, Bart Van Assche, James E.J. Bottomley,
Martin K. Petersen, Matthias Brugger, AngeloGioacchino Del Regno
Cc: wsd_upstream, peter.wang, stanley.chu, powen.kao, alice.chao,
naomi.chu, chun-hung.wu, cc.chou, eddie.huang
Since MAXQ is 0 based value, add one to obtain number of hardware queue.
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
---
drivers/ufs/core/ufs-mcq.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index 937933d3f77c..51b3c6ae781d 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -150,7 +150,8 @@ static int ufshcd_mcq_config_nr_queues(struct ufs_hba *hba)
u32 hba_maxq, rem, tot_queues;
struct Scsi_Host *host = hba->host;
- hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities);
+ /* maxq is 0 based value */
+ hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities) + 1;
tot_queues = UFS_MCQ_NUM_DEV_CMD_QUEUES + read_queues + poll_queues +
rw_queues;
--
2.18.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v6 0/3] Several UFS MCQ Code Changes
2023-05-04 15:44 [PATCH v6 0/3] Several UFS MCQ Code Changes Po-Wen Kao
` (2 preceding siblings ...)
2023-05-04 15:44 ` [PATCH v6 3/3] scsi: ufs: core: Fix mcq nr_hw_queues Po-Wen Kao
@ 2023-05-17 2:13 ` Martin K. Petersen
3 siblings, 0 replies; 5+ messages in thread
From: Martin K. Petersen @ 2023-05-17 2:13 UTC (permalink / raw)
To: linux-scsi, linux-kernel, linux-arm-kernel, linux-mediatek,
Matthias Brugger, AngeloGioacchino Del Regno, Po-Wen Kao
Cc: Martin K . Petersen, wsd_upstream, peter.wang, stanley.chu,
alice.chao, naomi.chu, chun-hung.wu, cc.chou, eddie.huang
On Thu, 04 May 2023 23:44:48 +0800, Po-Wen Kao wrote:
> v5 -> v6
> - Also fix call to sizeof_utp_transfer_cmd_desc() in
> `ufshcd_release_sdb_queue()` as suggested by Stanley Chu
>
> v4 -> v5
> - Send MTK driver MCQ support as independent patch and address Bart's
> comment there
> "[PATCH v1 0/2] Add MCQ support for MTK platform"
>
> [...]
Applied to 6.4/scsi-fixes, thanks!
[1/3] scsi: ufs: core: Fix mcq tag calcualtion
https://git.kernel.org/mkp/scsi/c/5149452ca662
[2/3] scsi: ufs: core: Rename symbol sizeof_utp_transfer_cmd_desc()
https://git.kernel.org/mkp/scsi/c/06caeb536b2b
[3/3] scsi: ufs: core: Fix mcq nr_hw_queues
https://git.kernel.org/mkp/scsi/c/72a81bb0b6fc
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-05-17 2:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-04 15:44 [PATCH v6 0/3] Several UFS MCQ Code Changes Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 1/3] scsi: ufs: core: Fix mcq tag calcualtion Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 2/3] scsi: ufs: core: Rename symbol sizeof_utp_transfer_cmd_desc() Po-Wen Kao
2023-05-04 15:44 ` [PATCH v6 3/3] scsi: ufs: core: Fix mcq nr_hw_queues Po-Wen Kao
2023-05-17 2:13 ` [PATCH v6 0/3] Several UFS MCQ Code Changes Martin K. Petersen
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®