Thanks for your feedback Ard. On Fri, Jun 26, 2020 at 08:15:16PM +0200, Ard Biesheuvel wrote: > On Fri, 26 Jun 2020 at 10:04, Giovanni Cabiddu > <giovanni.cabiddu@xxxxxxxxx> wrote: > > > > +static int qat_alg_skcipher_init_xts_tfm(struct crypto_skcipher *tfm) > > +{ > > + struct qat_alg_skcipher_ctx *ctx = crypto_skcipher_ctx(tfm); > > + int reqsize; > > + > > + ctx->ftfm = crypto_alloc_skcipher("xts(aes)", 0, CRYPTO_ALG_ASYNC); > > Why are you only permitting synchronous fallbacks? If the logic above > is sound, and copies the base.complete and base.data fields as well, > the fallback can complete asynchronously without problems. > Note that SIMD s/w implementations of XTS(AES) are asynchronous as > well, as they use the crypto_simd helper which queues requests for > asynchronous completion if the context from which the request was > issued does not permit access to the SIMD register file (e.g., softirq > context on some architectures, if the interrupted context is also > using SIMD) I did it this way since I though I didn't have a way to test it with an asynchronous sw implementation. I changed this line to avoid masking the asynchronous implementations and test it by forcing simd.c to use always cryptd (don't know if there is a simpler way to do it). Also, I added to the mask CRYPTO_ALG_NEED_FALLBACK so I don't get another implementation that requires a fallback. I'm going to send a v3. Regards, -- Giovanni