crypto: caam/jr - Remove extra memory barrier during job ring enqueue
authorVakul Garg <vakul.garg@nxp.com>
Fri, 22 Mar 2019 02:00:37 +0000 (02:00 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 28 Mar 2019 05:55:34 +0000 (13:55 +0800)
In caam_jr_enqueue(), a write barrier is needed to order stores to job
ring slot before declaring addition of new job into input job ring.
The register write is done using wr_reg32() which internally uses
iowrite32() for write operation. The api iowrite32() issues a write
barrier before issuing write operation. Therefore, the wmb() preceding
wr_reg32() can be safely removed.

Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
Reviewed-by: Horia Geanta <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/jr.c

index e95f827..1de2562 100644 (file)
@@ -371,9 +371,11 @@ int caam_jr_enqueue(struct device *dev, u32 *desc,
 
        /*
         * Ensure that all job information has been written before
-        * notifying CAAM that a new job was added to the input ring.
+        * notifying CAAM that a new job was added to the input ring
+        * using a memory barrier. The wr_reg32() uses api iowrite32()
+        * to do the register write. iowrite32() issues a memory barrier
+        * before the write operation.
         */
-       wmb();
 
        wr_reg32(&jrp->rregs->inpring_jobadd, 1);