Hello, I have a confusion about shash and ahash in Linux kernel.Wish you can help me.Thank you! The problem is that, 1.we have an asynchronous hardware.In its security driver, it has achieved the synchronous mode using schedule(). 2.we want to add this hardware security feature into Linux kernel,so we register a synchronous algorithm module.In this module,we via call the crypto API of the Hardware driver to achieve shash algorithm. 3.After testing,if we enable the self-test for crypt algorithm in Linux Kernel, the self-test will failed. and our algorithm can't be used.as the self-test using Ashah API(crypto_alloc_ashah,crypto_ahash_init,crypto_ahash_update,crypto_ahash_final) to test our shash algorithm. The error information is that: BUG: scheduling while atomic: cryptomgr_test/5796/0x00000002 Modules linked in: imx53_security_asyn_hash(+) sahara scc2_driver [<80038538>] (unwind_backtrace+0x0/0xf0) from [<8044112c>] (schedule+0x6c/0x334) [<8044112c>] (schedule+0x6c/0x334) from [<7f009848>] (sah_blocking_mode+0x80/0x138 [sahara]) [<7f009848>] (sah_blocking_mode+0x80/0x138 [sahara]) from [<7f00eaa8>] (adaptor_Exec_Descriptor_Chain+0x34/0x54 [sahara]) [<7f00eaa8>] (adaptor_Exec_Descriptor_Chain+0x34/0x54 [sahara]) from [<7f00cbd8>] (fsl_shw_hash+0x1b8/0x1fc [sahara]) [<7f00cbd8>] (fsl_shw_hash+0x1b8/0x1fc [sahara]) from [<7f0203d4>] (sahara_sha_final+0x88/0xd8 [imx53_security_asyn_hash]) [<7f0203d4>] (sahara_sha_final+0x88/0xd8 [imx53_security_asyn_hash]) from [<801fdd8c>] (crypto_shash_final+0x28/0x2c) [<801fdd8c>] (crypto_shash_final+0x28/0x2c) from [<801fdf3c>] (crypto_shash_finup+0x2c/0x30) [<801fdf3c>] (crypto_shash_finup+0x2c/0x30) from [<801fe104>] (shash_ahash_finup+0x60/0x90) [<801fe104>] (shash_ahash_finup+0x60/0x90) from [<801fd2dc>] (crypto_ahash_op+0xac/0xbc) [<801fd2dc>] (crypto_ahash_op+0xac/0xbc) from [<801ff2b0>] (test_hash+0x148/0x514) [<801ff2b0>] (test_hash+0x148/0x514) from [<801ff6cc>] (alg_test_hash+0x50/0x88) [<801ff6cc>] (alg_test_hash+0x50/0x88) from [<80200de8>] (alg_test+0x13c/0x1b0) [<80200de8>] (alg_test+0x13c/0x1b0) from [<801fe774>] (cryptomgr_test+0x24/0x44) [<801fe774>] (cryptomgr_test+0x24/0x44) from [<800788c4>] (kthread+0x78/0x80) [<800788c4>] (kthread+0x78/0x80) from [<800349e0>] (kernel_thread_exit+0x0/0x8) The real result is that kmap_atomic()(crypto_hash_walk in Linux kernel ) conflict with schedule()(in hardware driver). But if we disable the self-test, and using Shash API or Hash API to test, test will be successful. Now our requirement is that, The hardware feature can't be changed,how can we solve those problem that can use ashah API to test our shash algorithm in order to pass self-test -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html