lkml.org 
[lkml]   [2017]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.2 011/199] crypto: caam - fix AEAD givenc descriptors
    3.2.87-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Alex Porosanu <alexandru.porosanu@nxp.com>

    commit d128af17876d79b87edf048303f98b35f6a53dbc upstream.

    The AEAD givenc descriptor relies on moving the IV through the
    output FIFO and then back to the CTX2 for authentication. The
    SEQ FIFO STORE could be scheduled before the data can be
    read from OFIFO, especially since the SEQ FIFO LOAD needs
    to wait for the SEQ FIFO LOAD SKIP to finish first. The
    SKIP takes more time when the input is SG than when it's
    a contiguous buffer. If the SEQ FIFO LOAD is not scheduled
    before the STORE, the DECO will hang waiting for data
    to be available in the OFIFO so it can be transferred to C2.
    In order to overcome this, first force transfer of IV to C2
    by starting the "cryptlen" transfer first and then starting to
    store data from OFIFO to the output buffer.

    Fixes: 1acebad3d8db8 ("crypto: caam - faster aead implementation")
    Signed-off-by: Alex Porosanu <alexandru.porosanu@nxp.com>
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/crypto/caam/caamalg.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/drivers/crypto/caam/caamalg.c
    +++ b/drivers/crypto/caam/caamalg.c
    @@ -419,7 +419,9 @@ static int aead_set_sh_desc(struct crypt

    /* Will read cryptlen */
    append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
    - aead_append_src_dst(desc, FIFOLD_TYPE_MSG1OUT2);
    + append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | KEY_VLF |
    + FIFOLD_TYPE_MSG1OUT2 | FIFOLD_TYPE_LASTBOTH);
    + append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF);

    /* Write ICV */
    append_seq_store(desc, ctx->authsize, LDST_CLASS_2_CCB |
    \
     
     \ /
      Last update: 2017-03-10 13:14    [W:4.048 / U:0.856 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site