• Horia Geantă's avatar
    crypto: caam/jr - fix shared IRQ line handling · 23d422a4
    Horia Geantă authored
    There are cases when the interrupt status register (JRINTR) is non-zero,
    even though:
    1. An interrupt was generated, but it was masked OR
    2. There was no interrupt generated at all
    for the corresponding job ring.
    
    1. The case when interrupt is masked (JRCFGR_LS[IMSK]=1b'1)
    while other events have happened and are being accounted for, e.g.
    -JRINTR[HALT]=2b'10 - input job ring underwent a flush of all on-going
    jobs and processing of still-existing jobs (sitting in the ring) has been
    halted
    -JRINTR[HALT]=2b'01 - input job ring is currently undergoing a flush
    -JRINTR[ENTER_FAIL]=1b'1 - SecMon / SNVS transitioned to FAIL MODE
    It doesn't matter whether these events would assert the interrupt signal
    or not, interrupt is anyhow masked.
    
    2. The case when interrupt is not masked (JRCFGR_LS[IMSK]=1b'0), however
    the events accounted for in JRINTR do not generate interrupts, e.g.:
    -JRINTR[HALT]=2b'01
    -JRINTR[ENTER_FAIL]=1b'1 and JRCFGR_MS[FAIL_MODE]=1b'0
    
    Currently in these cases, when the JR interrupt handler is invoked (as a
    consequence of JR sharing the interrupt line with other devices - e.g.
    the two JRs on i.MX7ULP) it continues execution instead of returning
    IRQ_NONE.
    This could lead to situations like interrupt handler clearing JRINTR (and
    thus also the JRINTR[HALT] field) while corresponding job ring is
    suspended and then that job ring failing on resume path, due to expecting
    JRINTR[HALT]=b'10 and reading instead JRINTR[HALT]=b'00.
    
    Fix this by checking status of JRINTR[JRI] in the JR interrupt handler.
    If JRINTR[JRI]=1b'0, there was no interrupt generated for this JR and
    handler must return IRQ_NONE.
    Signed-off-by: default avatarHoria Geantă <horia.geanta@nxp.com>
    Signed-off-by: default avatarMeenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
    Reviewed-by: default avatarGaurav Jain <gaurav.jain@nxp.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    23d422a4
jr.c 21.5 KB