Kanchana P Sridhar <kanchana.p.sridhar@xxxxxxxxx> wrote: > With the latest mm-unstable, setting the iaa_crypto sync_mode to 'async' > causes crypto testmgr.c test_acomp() failure and dmesg call traces, and > zswap being unable to use 'deflate-iaa' as a compressor: > > echo async > /sys/bus/dsa/drivers/crypto/sync_mode > > [ 255.271030] zswap: compressor deflate-iaa not available > [ 369.960673] INFO: task cryptomgr_test:4889 blocked for more than 122 seconds. > [ 369.970127] Not tainted 6.13.0-rc1-mm-unstable-12-16-2024+ #324 > [ 369.977411] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > [ 369.986246] task:cryptomgr_test state:D stack:0 pid:4889 tgid:4889 ppid:2 flags:0x00004000 > [ 369.986253] Call Trace: > [ 369.986256] <TASK> > [ 369.986260] __schedule+0x45c/0xfa0 > [ 369.986273] schedule+0x2e/0xb0 > [ 369.986277] schedule_timeout+0xe7/0x100 > [ 369.986284] ? __prepare_to_swait+0x4e/0x70 > [ 369.986290] wait_for_completion+0x8d/0x120 > [ 369.986293] test_acomp+0x284/0x670 > [ 369.986305] ? __pfx_cryptomgr_test+0x10/0x10 > [ 369.986312] alg_test_comp+0x263/0x440 > [ 369.986315] ? sched_balance_newidle+0x259/0x430 > [ 369.986320] ? __pfx_cryptomgr_test+0x10/0x10 > [ 369.986323] alg_test.part.27+0x103/0x410 > [ 369.986326] ? __schedule+0x464/0xfa0 > [ 369.986330] ? __pfx_cryptomgr_test+0x10/0x10 > [ 369.986333] cryptomgr_test+0x20/0x40 > [ 369.986336] kthread+0xda/0x110 > [ 369.986344] ? __pfx_kthread+0x10/0x10 > [ 369.986346] ret_from_fork+0x2d/0x40 > [ 369.986355] ? __pfx_kthread+0x10/0x10 > [ 369.986358] ret_from_fork_asm+0x1a/0x30 > [ 369.986365] </TASK> > > This happens because the only async polling without interrupts that > iaa_crypto currently implements is with the 'sync' mode. With 'async', > iaa_crypto calls to compress/decompress submit the descriptor and return > -EINPROGRESS, without any mechanism in the driver to poll for > completions. Hence callers such as test_acomp() in crypto/testmgr.c or > zswap, that wrap the calls to crypto_acomp_compress() and > crypto_acomp_decompress() in synchronous wrappers, will block > indefinitely. Even before zswap can notice this problem, the crypto > testmgr.c's test_acomp() will fail and prevent registration of > "deflate-iaa" as a valid crypto acomp algorithm, thereby disallowing the > use of "deflate-iaa" as a zswap compress (zswap will fall-back to the > default compressor in this case). > > To fix this issue, this patch modifies the iaa_crypto sync_mode set > function to treat 'async' equivalent to 'sync', so that the correct and > only supported driver async polling without interrupts implementation is > enabled, and zswap can use 'deflate-iaa' as the compressor. > > Hence, with this patch, this is what will happen: > > echo async > /sys/bus/dsa/drivers/crypto/sync_mode > cat /sys/bus/dsa/drivers/crypto/sync_mode > sync > > There are no crypto/testmgr.c test_acomp() errors, no call traces and zswap > can use 'deflate-iaa' without any errors. The iaa_crypto documentation has > also been updated to mention this caveat with 'async' and what to expect > with this fix. > > True iaa_crypto async polling without interrupts is enabled in patch > "crypto: iaa - Implement batch_compress(), batch_decompress() API in > iaa_crypto." [1] which is under review as part of the "zswap IAA compress > batching" patch-series [2]. Until this is merged, we would appreciate it if > this current patch can be considered for a hotfix. > > [1]: https://patchwork.kernel.org/project/linux-mm/patch/20241221063119.29140-5-kanchana.p.sridhar@xxxxxxxxx/ > [2]: https://patchwork.kernel.org/project/linux-mm/list/?series=920084 > > Fixes: 09646c98d ("crypto: iaa - Add irq support for the crypto async interface") > Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@xxxxxxxxx> > --- > Documentation/driver-api/crypto/iaa/iaa-crypto.rst | 9 ++++++++- > drivers/crypto/intel/iaa/iaa_crypto_main.c | 2 +- > 2 files changed, 9 insertions(+), 2 deletions(-) Patch applied. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt