mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 06:15:38 +07:00
crypto: caam/jr - Remove spinlock for output job ring
For each job ring pair, the output ring is processed exactly by one cpu at a time under a tasklet context (one per ring). Therefore, there is no need to protect a job ring's access & its private data structure using a lock. Hence the lock can be 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>
This commit is contained in:
parent
e44e77ab8b
commit
a118dfa0db
@ -56,7 +56,6 @@ struct caam_drv_private_jr {
|
||||
u32 inpring_avail; /* Number of free entries in input ring */
|
||||
int head; /* entinfo (s/w ring) head index */
|
||||
dma_addr_t *inpring; /* Base of input ring, alloc DMA-safe */
|
||||
spinlock_t outlock ____cacheline_aligned; /* Output ring index lock */
|
||||
int out_ring_read_index; /* Output index "tail" */
|
||||
int tail; /* entinfo (s/w ring) tail index */
|
||||
struct jr_outentry *outring; /* Base of output ring, DMA-safe */
|
||||
|
@ -177,8 +177,6 @@ static void caam_jr_dequeue(unsigned long devarg)
|
||||
|
||||
head = READ_ONCE(jrp->head);
|
||||
|
||||
spin_lock(&jrp->outlock);
|
||||
|
||||
sw_idx = tail = jrp->tail;
|
||||
hw_idx = jrp->out_ring_read_index;
|
||||
|
||||
@ -201,7 +199,7 @@ static void caam_jr_dequeue(unsigned long devarg)
|
||||
/* mark completed, avoid matching on a recycled desc addr */
|
||||
jrp->entinfo[sw_idx].desc_addr_dma = 0;
|
||||
|
||||
/* Stash callback params for use outside of lock */
|
||||
/* Stash callback params */
|
||||
usercall = jrp->entinfo[sw_idx].callbk;
|
||||
userarg = jrp->entinfo[sw_idx].cbkarg;
|
||||
userdesc = jrp->entinfo[sw_idx].desc_addr_virt;
|
||||
@ -234,8 +232,6 @@ static void caam_jr_dequeue(unsigned long devarg)
|
||||
jrp->tail = tail;
|
||||
}
|
||||
|
||||
spin_unlock(&jrp->outlock);
|
||||
|
||||
/* Finally, execute user's callback */
|
||||
usercall(dev, userdesc, userstatus, userarg);
|
||||
outring_used--;
|
||||
@ -452,7 +448,6 @@ static int caam_jr_init(struct device *dev)
|
||||
jrp->inpring_avail = JOBR_DEPTH;
|
||||
|
||||
spin_lock_init(&jrp->inplock);
|
||||
spin_lock_init(&jrp->outlock);
|
||||
|
||||
/* Select interrupt coalescing parameters */
|
||||
clrsetbits_32(&jrp->rregs->rconfig_lo, 0, JOBR_INTC |
|
||||
|
Loading…
Reference in New Issue
Block a user