Skip to content

Commit bbfcac5

Browse files
nxa22042herbertx
authored andcommitted
crypto: caam/jr - Remove extra memory barrier during job ring dequeue
In function caam_jr_dequeue(), a full memory barrier is used before writing response job ring's register to signal removal of the completed job. Therefore for writing the register, we do not need another write memory barrier. Hence it is removed by replacing the call to wr_reg32() with a newly defined function wr_reg32_relaxed(). Signed-off-by: Vakul Garg <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent f5a2aeb commit bbfcac5

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

drivers/crypto/caam/jr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ static void caam_jr_dequeue(unsigned long devarg)
213213
mb();
214214

215215
/* set done */
216-
wr_reg32(&jrp->rregs->outring_rmvd, 1);
216+
wr_reg32_relaxed(&jrp->rregs->outring_rmvd, 1);
217217

218218
jrp->out_ring_read_index = (jrp->out_ring_read_index + 1) &
219219
(JOBR_DEPTH - 1);

drivers/crypto/caam/regs.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,14 @@ cpu_to_caam(16)
9696
cpu_to_caam(32)
9797
cpu_to_caam(64)
9898

99+
static inline void wr_reg32_relaxed(void __iomem *reg, u32 data)
100+
{
101+
if (caam_little_end)
102+
writel_relaxed(data, reg);
103+
else
104+
writel_relaxed(cpu_to_be32(data), reg);
105+
}
106+
99107
static inline void wr_reg32(void __iomem *reg, u32 data)
100108
{
101109
if (caam_little_end)

0 commit comments

Comments
 (0)