mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
dmaengine: fsl_raid: byte-swap cdb32 when programming CDBs
The three prep functions write the first word of the command descriptor block (cdb32) with a plain u32 assignment, while every other CDB/CF descriptor field is written with cpu_to_be32(). The RAID Engine expects big-endian descriptors, so the plain assignment produces a corrupted CDB on little-endian hosts. Use cpu_to_be32() for cdb32 to match the surrounding code. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev <rosenp@gmail.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20260910194324.33697-1-rosenp@gmail.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
bcb4d469b1
commit
8b64181090
|
|
@ -361,7 +361,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 */
|
||||
|
|
@ -481,7 +481,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[] */
|
||||
|
|
@ -564,7 +564,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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user