On Mon, 29 Jun 2020 at 19:05, Giovanni Cabiddu <giovanni.cabiddu@xxxxxxxxx> wrote: > > 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). > This is exactly how I tested it in the past, but note that the extended testing that Eric implemented will also run from a context where SIMD is disabled artificially, and so you should be getting this behavior in any case. > 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