From: Rosen Penev <rosenp@gmail.com>
To: dmaengine@vger.kernel.org
Cc: Vinod Koul <vkoul@kernel.org>, Frank Li <Frank.Li@kernel.org>,
Rosen Penev <rosenp@gmail.com>,
linux-kernel@vger.kernel.org (open list)
Subject: [PATCH] dmaengine: fsl_raid: fix sparse warnings
Date: Wed, 19 Aug 2026 17:28:16 -0700 [thread overview]
Message-ID: <20260820002816.17382-1-rosenp@gmail.com> (raw)
The register maps in fsl_raid.h annotate every field as __be32, but
they are accessed only through ioread32be()/iowrite32be(), which
already perform the byte swap and take plain u32 __iomem pointers.
The __be32 annotation therefore makes sparse reject each access:
drivers/dma/fsl_raid.c:116:17: sparse: incorrect type in argument 1
(different base types) ... got restricted __be32 [noderef] __iomem *
Drop __be32 from struct fsl_re_ctrl and struct fsl_re_chan_cfg; the
descriptor/CDB structures written via cpu_to_be32() keep their
annotations.
Also fix the remaining sparse warnings in fsl_raid.c:
- compare the desc pointer with !desc instead of desc <= 0 in the
three prep functions,
- byte swap cdb32 with cpu_to_be32() when programming the XOR, PQ
and MOVE command descriptor blocks; the plain u32 assignment is
broken on little-endian hosts.
No warnings remain.
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202608200637.ro1CqMxi-lkp@intel.com/
Fixes: 68b7fbc23529 ("dma: fsl_raid: keep MMIO bases as void __iomem and cast at access")
Assisted-by: opencode:deepseek-v4-flash-free
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/dma/fsl_raid.c | 12 +++++-----
drivers/dma/fsl_raid.h | 54 +++++++++++++++++++++---------------------
2 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/drivers/dma/fsl_raid.c b/drivers/dma/fsl_raid.c
index a35ddc1297ce..524a7329c3c4 100644
--- a/drivers/dma/fsl_raid.c
+++ b/drivers/dma/fsl_raid.c
@@ -350,7 +350,7 @@ static struct dma_async_tx_descriptor *fsl_re_prep_dma_genq(
}
desc = fsl_re_chan_alloc_desc(re_chan, flags);
- if (desc <= 0)
+ if (!desc)
return NULL;
if (scf && (flags & DMA_PREP_CONTINUE)) {
@@ -365,7 +365,7 @@ static struct dma_async_tx_descriptor *fsl_re_prep_dma_genq(
cdb |= FSL_RE_INTR_ON_ERROR << FSL_RE_CDB_ERROR_SHIFT;
cdb |= FSL_RE_DATA_DEP << FSL_RE_CDB_DEPEND_SHIFT;
xor = desc->cdb_addr;
- xor->cdb32 = cdb;
+ xor->cdb32 = cpu_to_be32(cdb);
if (scf) {
/* compute q = src0*coef0^src1*coef1^..., * is GF(8) mult */
@@ -474,7 +474,7 @@ static struct dma_async_tx_descriptor *fsl_re_prep_dma_pq(
src_cnt += 3;
desc = fsl_re_chan_alloc_desc(re_chan, flags);
- if (desc <= 0)
+ if (!desc)
return NULL;
/* Filling GenQQ CDB */
@@ -485,7 +485,7 @@ static struct dma_async_tx_descriptor *fsl_re_prep_dma_pq(
cdb |= FSL_RE_DATA_DEP << FSL_RE_CDB_DEPEND_SHIFT;
pq = desc->cdb_addr;
- pq->cdb32 = cdb;
+ pq->cdb32 = cpu_to_be32(cdb);
p = pq->gfm_q1;
/* Init gfm_q1[] */
@@ -558,7 +558,7 @@ static struct dma_async_tx_descriptor *fsl_re_prep_dma_memcpy(
}
desc = fsl_re_chan_alloc_desc(re_chan, flags);
- if (desc <= 0)
+ if (!desc)
return NULL;
/* Filling move CDB */
@@ -568,7 +568,7 @@ static struct dma_async_tx_descriptor *fsl_re_prep_dma_memcpy(
cdb |= FSL_RE_DATA_DEP << FSL_RE_CDB_DEPEND_SHIFT;
move = desc->cdb_addr;
- move->cdb32 = cdb;
+ move->cdb32 = cpu_to_be32(cdb);
/* Filling frame 0 of CFD with move CDB */
cf = desc->cf_addr;
diff --git a/drivers/dma/fsl_raid.h b/drivers/dma/fsl_raid.h
index 748047996bbc..1b6f6b82c7d3 100644
--- a/drivers/dma/fsl_raid.h
+++ b/drivers/dma/fsl_raid.h
@@ -109,59 +109,59 @@
struct fsl_re_ctrl {
/* General Configuration Registers */
- __be32 global_config; /* Global Configuration Register */
+ u32 global_config; /* Global Configuration Register */
u8 rsvd1[4];
- __be32 galois_field_config; /* Galois Field Configuration Register */
+ u32 galois_field_config; /* Galois Field Configuration Register */
u8 rsvd2[4];
- __be32 jq_wrr_config; /* WRR Configuration register */
+ u32 jq_wrr_config; /* WRR Configuration register */
u8 rsvd3[4];
- __be32 crc_config; /* CRC Configuration register */
+ u32 crc_config; /* CRC Configuration register */
u8 rsvd4[228];
- __be32 system_reset; /* System Reset Register */
+ u32 system_reset; /* System Reset Register */
u8 rsvd5[252];
- __be32 global_status; /* Global Status Register */
+ u32 global_status; /* Global Status Register */
u8 rsvd6[832];
- __be32 re_liodn_base; /* LIODN Base Register */
+ u32 re_liodn_base; /* LIODN Base Register */
u8 rsvd7[1712];
- __be32 re_version_id; /* Version ID register of RE */
- __be32 re_version_id_2; /* Version ID 2 register of RE */
+ u32 re_version_id; /* Version ID register of RE */
+ u32 re_version_id_2; /* Version ID 2 register of RE */
u8 rsvd8[512];
- __be32 host_config; /* Host I/F Configuration Register */
+ u32 host_config; /* Host I/F Configuration Register */
};
struct fsl_re_chan_cfg {
/* Registers for JR interface */
- __be32 jr_config_0; /* Job Queue Configuration 0 Register */
- __be32 jr_config_1; /* Job Queue Configuration 1 Register */
- __be32 jr_interrupt_status; /* Job Queue Interrupt Status Register */
+ u32 jr_config_0; /* Job Queue Configuration 0 Register */
+ u32 jr_config_1; /* Job Queue Configuration 1 Register */
+ u32 jr_interrupt_status; /* Job Queue Interrupt Status Register */
u8 rsvd1[4];
- __be32 jr_command; /* Job Queue Command Register */
+ u32 jr_command; /* Job Queue Command Register */
u8 rsvd2[4];
- __be32 jr_status; /* Job Queue Status Register */
+ u32 jr_status; /* Job Queue Status Register */
u8 rsvd3[228];
/* Input Ring */
- __be32 inbring_base_h; /* Inbound Ring Base Address Register - High */
- __be32 inbring_base_l; /* Inbound Ring Base Address Register - Low */
- __be32 inbring_size; /* Inbound Ring Size Register */
+ u32 inbring_base_h; /* Inbound Ring Base Address Register - High */
+ u32 inbring_base_l; /* Inbound Ring Base Address Register - Low */
+ u32 inbring_size; /* Inbound Ring Size Register */
u8 rsvd4[4];
- __be32 inbring_slot_avail; /* Inbound Ring Slot Available Register */
+ u32 inbring_slot_avail; /* Inbound Ring Slot Available Register */
u8 rsvd5[4];
- __be32 inbring_add_job; /* Inbound Ring Add Job Register */
+ u32 inbring_add_job; /* Inbound Ring Add Job Register */
u8 rsvd6[4];
- __be32 inbring_cnsmr_indx; /* Inbound Ring Consumer Index Register */
+ u32 inbring_cnsmr_indx; /* Inbound Ring Consumer Index Register */
u8 rsvd7[220];
/* Output Ring */
- __be32 oubring_base_h; /* Outbound Ring Base Address Register - High */
- __be32 oubring_base_l; /* Outbound Ring Base Address Register - Low */
- __be32 oubring_size; /* Outbound Ring Size Register */
+ u32 oubring_base_h; /* Outbound Ring Base Address Register - High */
+ u32 oubring_base_l; /* Outbound Ring Base Address Register - Low */
+ u32 oubring_size; /* Outbound Ring Size Register */
u8 rsvd8[4];
- __be32 oubring_job_rmvd; /* Outbound Ring Job Removed Register */
+ u32 oubring_job_rmvd; /* Outbound Ring Job Removed Register */
u8 rsvd9[4];
- __be32 oubring_slot_full; /* Outbound Ring Slot Full Register */
+ u32 oubring_slot_full; /* Outbound Ring Slot Full Register */
u8 rsvd10[4];
- __be32 oubring_prdcr_indx; /* Outbound Ring Producer Index */
+ u32 oubring_prdcr_indx; /* Outbound Ring Producer Index */
};
/*
--
2.55.0
next reply other threads:[~2026-08-20 0:28 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 0:28 Rosen Penev [this message]
2026-08-20 0:40 ` [PATCH] dmaengine: fsl_raid: fix sparse warnings sashiko-bot
2026-08-20 15:40 ` Frank Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260820002816.17382-1-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=Frank.Li@kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.