Re: [v3 PATCH] crypto: marvell/cesa - Do not chain submitted requests

Klaus Kudielka
2025-05-10T08:32:56Z

On Thu, 2025-05-08 at 13:22 +0800, Herbert Xu wrote:
> v3 simplifies it a little bit:
>
> ---8<---
> This driver tries to chain requests together before submitting them
> to hardware in order to reduce completion interrupts.
>
> However, it even extends chains that have already been submitted
> to hardware.  This is dangerous because there is no way of knowing
> whether the hardware has already read the DMA memory in question
> or not.
>
> Fix this by splitting the chain list into two.  One for submitted
> requests and one for requests that have not yet been submitted.
> Only extend the latter.
>
> Reported-by: Klaus Kudielka <klaus.kudielka@gmail.com>
> Fixes: 85030c5168f1 ("crypto: marvell - Add support for chaining crypto requests in TDMA mode")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

[...]

So, I am back at the hardware (armada-385-turris-omnia), and gave this patch a try.
CONFIG_CRYPTO_DEV_MARVELL_CESA=m

Upon modprobe marvell-cesa, I get the following results.

v6.15-rc5, unmodified
=====================

[ 73.061653] marvell-cesa f1090000.crypto: CESA device successfully registered
[ 73.115082] alg: ahash: mv-hmac-sha1 test failed (wrong result) on test vector 2, cfg="import/export"
[ 73.115206] alg: ahash: mv-hmac-md5 test failed (wrong result) on test vector 6, cfg="init+update+update+final two even splits"
[ 73.124364] alg: self-tests for hmac(sha1) using mv-hmac-sha1 failed (rc=-22)
[ 73.135887] alg: self-tests for hmac(md5) using mv-hmac-md5 failed (rc=-22)
[ 73.135893] ------------[ cut here ]------------
[ 73.135902] ------------[ cut here ]------------
[ 73.135896] WARNING: CPU: 0 PID: 394 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 73.135906] WARNING: CPU: 1 PID: 397 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 73.135911] alg: self-tests for hmac(md5) using mv-hmac-md5 failed (rc=-22)
[ 73.135914] Modules linked in: marvell_cesa
[ 73.135918] alg: self-tests for hmac(sha1) using mv-hmac-sha1 failed (rc=-22)
[ 73.135921] libdes
[ 73.135922] Modules linked in:
[ 73.135924] libaes
[ 73.135925] marvell_cesa libdes

[ 73.135929] libaes
[ 73.135932] CPU: 0 UID: 0 PID: 394 Comm: cryptomgr_test Not tainted 6.15.0-rc5 #3 NONE
[ 73.135940] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 73.135943] Call trace:
[ 73.135948] unwind_backtrace from show_stack+0x10/0x14
[ 73.135963] show_stack from dump_stack_lvl+0x50/0x64
[ 73.135973] dump_stack_lvl from __warn+0x7c/0xd4
[ 73.135982] __warn from warn_slowpath_fmt+0x110/0x16c
[ 73.135994] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 73.136004] alg_test from cryptomgr_test+0x18/0x38
[ 73.136011] cryptomgr_test from kthread+0xe8/0x204
[ 73.136021] kthread from ret_from_fork+0x14/0x28
[ 73.136028] Exception stack(0xf0ac1fb0 to 0xf0ac1ff8)
[ 73.136033] 1fa0: 00000000 00000000 00000000 00000000
[ 73.136038] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 73.136042] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 73.136045] ---[ end trace 0000000000000000 ]---
[ 73.136046] CPU: 1 UID: 0 PID: 397 Comm: cryptomgr_test Not tainted 6.15.0-rc5 #3 NONE
[ 73.136052] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 73.136055] Call trace:
[ 73.136057] unwind_backtrace from show_stack+0x10/0x14
[ 73.136070] show_stack from dump_stack_lvl+0x50/0x64
[ 73.136079] dump_stack_lvl from __warn+0x7c/0xd4
[ 73.136087] __warn from warn_slowpath_fmt+0x110/0x16c
[ 73.136098] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 73.136108] alg_test from cryptomgr_test+0x18/0x38
[ 73.136115] cryptomgr_test from kthread+0xe8/0x204
[ 73.136123] kthread from ret_from_fork+0x14/0x28
[ 73.136130] Exception stack(0xf0ac9fb0 to 0xf0ac9ff8)
[ 73.136135] 9fa0: 00000000 00000000 00000000 00000000
[ 73.136140] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 73.136144] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 73.136147] ---[ end trace 0000000000000000 ]---
[ 73.137628] alg: ahash: mv-hmac-sha256 test failed (wrong result) on test vector 0, cfg="init+update+final aligned buffer"
[ 73.148747] alg: self-tests for hmac(sha256) using mv-hmac-sha256 failed (rc=-22)
[ 73.148755] ------------[ cut here ]------------
[ 73.148760] WARNING: CPU: 0 PID: 399 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 73.148783] alg: self-tests for hmac(sha256) using mv-hmac-sha256 failed (rc=-22)
[ 73.148791] Modules linked in: marvell_cesa libdes libaes
[ 73.148827] CPU: 0 UID: 0 PID: 399 Comm: cryptomgr_test Tainted: G W 6.15.0-rc5 #3 NONE
[ 73.148840] Tainted: [W]=WARN
[ 73.148842] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 73.148847] Call trace:
[ 73.148854] unwind_backtrace from show_stack+0x10/0x14
[ 73.148878] show_stack from dump_stack_lvl+0x50/0x64
[ 73.148893] dump_stack_lvl from __warn+0x7c/0xd4
[ 73.148912] __warn from warn_slowpath_fmt+0x110/0x16c
[ 73.148929] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 73.148951] alg_test from cryptomgr_test+0x18/0x38
[ 73.148960] cryptomgr_test from kthread+0xe8/0x204
[ 73.148970] kthread from ret_from_fork+0x14/0x28
[ 73.148977] Exception stack(0xf0addfb0 to 0xf0addff8)
[ 73.148982] dfa0: 00000000 00000000 00000000 00000000
[ 73.148987] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 73.148991] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 73.148994] ---[ end trace 0000000000000000 ]---

v6.15-rc5, with the v3 PATCH
============================

[ 28.374751] marvell-cesa f1090000.crypto: CESA device successfully registered
[ 28.427503] alg: ahash: mv-hmac-sha1 test failed (wrong result) on test vector 0, cfg="init+update+final misaligned buffer"
[ 28.427520] alg: ahash: mv-hmac-sha256 test failed (wrong result) on test vector 2, cfg="init+update+update+final two even splits"
[ 28.438688] alg: self-tests for hmac(sha1) using mv-hmac-sha1 failed (rc=-22)
[ 28.438693] ------------[ cut here ]------------
[ 28.438695] WARNING: CPU: 1 PID: 392 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 28.450482] alg: self-tests for hmac(sha1) using mv-hmac-sha1 failed (rc=-22)
[ 28.450486] Modules linked in:
[ 28.450485] alg: self-tests for hmac(sha256) using mv-hmac-sha256 failed (rc=-22)
[ 28.450489] ------------[ cut here ]------------
[ 28.450490] marvell_cesa libdes libaes
[ 28.450494] WARNING: CPU: 0 PID: 395 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 28.450504] alg: self-tests for hmac(sha256) using mv-hmac-sha256 failed (rc=-22)
[ 28.450502] CPU: 1 UID: 0 PID: 392 Comm: cryptomgr_test Not tainted 6.15.0-rc5+ #4 NONE
[ 28.450508] Modules linked in:
[ 28.450510] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 28.450511] marvell_cesa
[ 28.450513] Call trace:
[ 28.450514] libdes libaes
[ 28.450519] unwind_backtrace from show_stack+0x10/0x14
[ 28.450534] show_stack from dump_stack_lvl+0x50/0x64
[ 28.450544] dump_stack_lvl from __warn+0x7c/0xd4
[ 28.450554] __warn from warn_slowpath_fmt+0x110/0x16c
[ 28.450565] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 28.450575] alg_test from cryptomgr_test+0x18/0x38
[ 28.450582] cryptomgr_test from kthread+0xe8/0x204
[ 28.450592] kthread from ret_from_fork+0x14/0x28
[ 28.450599] Exception stack(0xf0b09fb0 to 0xf0b09ff8)
[ 28.450604] 9fa0: 00000000 00000000 00000000 00000000
[ 28.450609] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 28.450613] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 28.450616] ---[ end trace 0000000000000000 ]---
[ 28.450617] CPU: 0 UID: 0 PID: 395 Comm: cryptomgr_test Not tainted 6.15.0-rc5+ #4 NONE
[ 28.450624] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 28.450626] Call trace:
[ 28.450628] unwind_backtrace from show_stack+0x10/0x14
[ 28.450640] show_stack from dump_stack_lvl+0x50/0x64
[ 28.450650] dump_stack_lvl from __warn+0x7c/0xd4
[ 28.450658] __warn from warn_slowpath_fmt+0x110/0x16c
[ 28.450669] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 28.450679] alg_test from cryptomgr_test+0x18/0x38
[ 28.450686] cryptomgr_test from kthread+0xe8/0x204
[ 28.450694] kthread from ret_from_fork+0x14/0x28
[ 28.450701] Exception stack(0xf0aa9fb0 to 0xf0aa9ff8)
[ 28.450706] 9fa0: 00000000 00000000 00000000 00000000
[ 28.450711] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 28.450716] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 28.450718] ---[ end trace 0000000000000000 ]---
[ 28.454686] alg: ahash: mv-md5 test failed (wrong result) on test vector 1, cfg="init+update+final aligned buffer"
[ 28.465109] alg: self-tests for md5 using mv-md5 failed (rc=-22)
[ 28.465120] ------------[ cut here ]------------
[ 28.465125] WARNING: CPU: 1 PID: 385 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 28.465140] alg: self-tests for md5 using mv-md5 failed (rc=-22)
[ 28.465143] Modules linked in: marvell_cesa libdes libaes
[ 28.465172] CPU: 1 UID: 0 PID: 385 Comm: cryptomgr_test Tainted: G W 6.15.0-rc5+ #4 NONE
[ 28.465181] Tainted: [W]=WARN
[ 28.465183] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 28.465186] Call trace:
[ 28.465190] unwind_backtrace from show_stack+0x10/0x14
[ 28.465205] show_stack from dump_stack_lvl+0x50/0x64
[ 28.465215] dump_stack_lvl from __warn+0x7c/0xd4
[ 28.465224] __warn from warn_slowpath_fmt+0x110/0x16c
[ 28.465235] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 28.465246] alg_test from cryptomgr_test+0x18/0x38
[ 28.465253] cryptomgr_test from kthread+0xe8/0x204
[ 28.465262] kthread from ret_from_fork+0x14/0x28
[ 28.465270] Exception stack(0xf0ae9fb0 to 0xf0ae9ff8)
[ 28.465275] 9fa0: 00000000 00000000 00000000 00000000
[ 28.465280] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 28.465284] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 28.465287] ---[ end trace 0000000000000000 ]---
[ 28.465317] alg: ahash: mv-hmac-md5 setkey failed on test vector 0; expected_error=0, actual_error=-80, flags=0x1
[ 28.475674] alg: self-tests for hmac(md5) using mv-hmac-md5 failed (rc=-80)
[ 28.475685] ------------[ cut here ]------------
[ 28.475694] WARNING: CPU: 0 PID: 390 at crypto/testmgr.c:5871 alg_test+0x5f0/0x614
[ 28.475716] alg: self-tests for hmac(md5) using mv-hmac-md5 failed (rc=-80)
[ 28.475724] Modules linked in: marvell_cesa libdes libaes
[ 28.475752] CPU: 0 UID: 0 PID: 390 Comm: cryptomgr_test Tainted: G W 6.15.0-rc5+ #4 NONE
[ 28.475770] Tainted: [W]=WARN
[ 28.475772] Hardware name: Marvell Armada 380/385 (Device Tree)
[ 28.475774] Call trace:
[ 28.475780] unwind_backtrace from show_stack+0x10/0x14
[ 28.475799] show_stack from dump_stack_lvl+0x50/0x64
[ 28.475818] dump_stack_lvl from __warn+0x7c/0xd4
[ 28.475831] __warn from warn_slowpath_fmt+0x110/0x16c
[ 28.475853] warn_slowpath_fmt from alg_test+0x5f0/0x614
[ 28.475865] alg_test from cryptomgr_test+0x18/0x38
[ 28.475872] cryptomgr_test from kthread+0xe8/0x204
[ 28.475881] kthread from ret_from_fork+0x14/0x28
[ 28.475888] Exception stack(0xf0b05fb0 to 0xf0b05ff8)
[ 28.475893] 5fa0: 00000000 00000000 00000000 00000000
[ 28.475897] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 28.475902] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 28.475904] ---[ end trace 0000000000000000 ]---