diff mbox series

[v1] ufs: core: fix hwq_id type and value

Message ID 20250506124038.4071609-1-peter.wang@mediatek.com
State New
Headers show
Series [v1] ufs: core: fix hwq_id type and value | expand

Commit Message

Peter Wang (王信友) May 6, 2025, 12:39 p.m. UTC
From: Peter Wang <peter.wang@mediatek.com>

Because the member id of struct ufs_hw_queue is u32 (hwq->id) and
the trace entry hwq_id is also u32, the type should be changed to u32.
If mcq is not supported, SDB mode only supports one hardware queue,
for which setting the hwq_id to 0 is more suitable.

Fixes: 4a52338bf288 ("scsi: ufs: core: Add trace event for MCQ")
Cc: <stable@vger.kernel.org>
Signed-off-by: Peter Wang <peter.wang@mediatek.com>
---
 drivers/ufs/core/ufshcd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Peter Wang (王信友) May 7, 2025, 4:03 a.m. UTC | #1
On Tue, 2025-05-06 at 09:15 -0700, Bart Van Assche wrote:
> 
> Is this change really necessary? I like the current behavior because
> it
> makes it easy to figure out whether or not MCQ has been enabled. Even
> if
> others would agree with this change, I think that the "Fixes:" and
> "Cc:
> stable" tags are overkill because I don't see this as a bug fix but
> rather as a behavior change that is not a bug fix.
> 
> Thanks,
> 
> Bart.


Hi Bart,

Whether it is necessary or not depends on how we define 'necessary.' 
If the criterion is simply to avoid errors, then indeed, this patch 
is not necessary. However, if we are addressing the warning caused 
by incorrect behavior (assigning int to u32), then it is necessary 
to fix it. After all, we shouldn't just be satisfied with avoiding 
errors, we should strive to make the Linux kernel as perfect as 
possible, shouldn't we?

Additionally, there are many ways to determine whether MCQ is enabled,
including reading the host capability or checking hba->mcq_enabled,
etc. 
Moreover, MCQ is not a feature that trun on and off at runtime.
It is at the end of the UFS initialization that the status of MCQ 
is determined, so it shouldn't be necessary to rely on this to 
determine whether MCQ is enabled, right?

Thanks
Peter
Bart Van Assche May 7, 2025, 7:26 p.m. UTC | #2
On 5/6/25 9:03 PM, Peter Wang (王信友) wrote:
> Whether it is necessary or not depends on how we define 'necessary.'
> If the criterion is simply to avoid errors, then indeed, this patch
> is not necessary. However, if we are addressing the warning caused
> by incorrect behavior (assigning int to u32), then it is necessary
> to fix it. After all, we shouldn't just be satisfied with avoiding
> errors, we should strive to make the Linux kernel as perfect as
> possible, shouldn't we?

Errors? Which errors? Using -1 instead of UINT_MAX is common in C code.
Assigning variables of signed integer type to unsigned variables is also
widespread. Using %d to format a negative number, although dubious, is
also common in C code. Several years ago gcc warned about using %d to
format unsigned integers. That warning was disabled again because there
is too much existing code that follows this practice.

> Additionally, there are many ways to determine whether MCQ is enabled,
> including reading the host capability or checking hba->mcq_enabled,
> etc.
> Moreover, MCQ is not a feature that trun on and off at runtime.
> It is at the end of the UFS initialization that the status of MCQ
> is determined, so it shouldn't be necessary to rely on this to
> determine whether MCQ is enabled, right?

If you want to proceed with this patch, please make it clear in the
patch description that this patch is a behavior change and not a bug
fix.

Thanks,

Bart.
Peter Wang (王信友) May 8, 2025, 9:12 a.m. UTC | #3
On Wed, 2025-05-07 at 12:26 -0700, Bart Van Assche wrote:
> 
> If you want to proceed with this patch, please make it clear in the
> patch description that this patch is a behavior change and not a bug
> fix.
> 
> Thanks,
> 
> Bart.

Hi Bart,

Okay, the commit message for the bug fix will be 
corrected in the next version.

Thanks
Peter
diff mbox series

Patch

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 7735421e3991..14e4cfbcb9eb 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -432,7 +432,7 @@  static void ufshcd_add_command_trace(struct ufs_hba *hba, unsigned int tag,
 	u8 opcode = 0, group_id = 0;
 	u32 doorbell = 0;
 	u32 intr;
-	int hwq_id = -1;
+	u32 hwq_id = 0;
 	struct ufshcd_lrb *lrbp = &hba->lrb[tag];
 	struct scsi_cmnd *cmd = lrbp->cmd;
 	struct request *rq = scsi_cmd_to_rq(cmd);