Skip to content

Commit

Permalink
crypto: caam - consolidate memory barriers from job ring en/dequeue
Browse files Browse the repository at this point in the history
Memory barriers are implied by the i/o register write implementation
(at least on Power).  So we can remove the redundant wmb() in
caam_jr_enqueue, and, in dequeue(), hoist the h/w done notification
write up to before we need to increment the head of the ring, and
save an smp_mb.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
Kim Phillips authored and Herbert Xu committed Jun 27, 2012
1 parent a8ea07c commit 14a8e29
Showing 1 changed file with 2 additions and 6 deletions.
8 changes: 2 additions & 6 deletions drivers/crypto/caam/jr.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ static void caam_jr_dequeue(unsigned long devarg)
userdesc = jrp->entinfo[sw_idx].desc_addr_virt;
userstatus = jrp->outring[hw_idx].jrstatus;

smp_mb();
/* set done */
wr_reg32(&jrp->rregs->outring_rmvd, 1);

jrp->out_ring_read_index = (jrp->out_ring_read_index + 1) &
(JOBR_DEPTH - 1);
Expand All @@ -114,9 +115,6 @@ static void caam_jr_dequeue(unsigned long devarg)
jrp->tail = tail;
}

/* set done */
wr_reg32(&jrp->rregs->outring_rmvd, 1);

spin_unlock_bh(&jrp->outlock);

/* Finally, execute user's callback */
Expand Down Expand Up @@ -265,8 +263,6 @@ int caam_jr_enqueue(struct device *dev, u32 *desc,
(JOBR_DEPTH - 1);
jrp->head = (head + 1) & (JOBR_DEPTH - 1);

wmb();

wr_reg32(&jrp->rregs->inpring_jobadd, 1);

spin_unlock(&jrp->inplock);
Expand Down

0 comments on commit 14a8e29

Please sign in to comment.