Re: [PATCH v4 03/16] crypto: caam - move tasklet_init() call down

From: Leonard Crestez
Date: Wed Jul 03 2019 - 09:51:23 EST


On 7/3/2019 11:14 AM, Andrey Smirnov wrote:
> Move tasklet_init() call further down in order to simplify error path
> cleanup. No functional change intended.
>
> diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c
> index 4b25b2fa3d02..a7ca2bbe243f 100644
> --- a/drivers/crypto/caam/jr.c
> +++ b/drivers/crypto/caam/jr.c
> @@ -441,15 +441,13 @@ static int caam_jr_init(struct device *dev)
>
> jrp = dev_get_drvdata(dev);
>
> - tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev);
> -
> /* Connect job ring interrupt handler. */
> error = request_irq(jrp->irq, caam_jr_interrupt, IRQF_SHARED,
> dev_name(dev), dev);
> if (error) {
> dev_err(dev, "can't connect JobR %d interrupt (%d)\n",
> jrp->ridx, jrp->irq);
> - goto out_kill_deq;
> + return error;
> }

The caam_jr_interrupt handler can schedule the tasklet so it makes sense
to have it be initialized ahead of request_irq. In theory it's possible
for an interrupt to be triggered immediately when request_irq is called.

I'm not very familiar with the CAAM ip, can you ensure no interrupts are
pending in HW at probe time? The "no functional change" part is not obvious.

--
Regards,
Leonard