Re: [PATCH 15/17] lib/crypto: s390/sha3: Migrate optimized code into library
From: Harald Freudenberger
Date: Fri Oct 24 2025 - 10:26:05 EST
On 2025-10-21 17:49, Eric Biggers wrote:
On Tue, Oct 21, 2025 at 10:43:00AM +0200, Holger Dengler wrote:
Hi Eric,
On 21/10/2025 09:24, Holger Dengler wrote:
> On 20/10/2025 19:57, Eric Biggers wrote:
[...]>> - Risk of bugs. QEMU doesn't support the s390 SHA-3
instructions, so no
>> one except the s390 folks can test the code. I can try to write code
>> for you, but I can't test it. And the s390 SHA-3 code has had bugs;
>> see commits 992b7066800f, 68279380266a5, 73c2437109c3.
>>
>> The first priority should be correctness.
>
> Let me figure out, if me and my colleagues can do the testing for you.
> Unfortunately, I'll be unavailable for the next two weeks. But I'll come back
> with a solution for the testing.
I talked to Harald: we can do the testing for you on our development
machines.
Please send new series to us or provide them in your git repo.
Thanks! I'll Cc both of you on v2 when I send it later. For now, this
series (v1) can be found in lore at
https://lore.kernel.org/linux-crypto/20251020005038.661542-1-ebiggers@xxxxxxxxxx/T/#u
And as mentioned in the cover letter it's also retrievable from git:
git fetch
https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git
sha3-lib-v1
v1 already has the s390 optimized implementations of
sha3_absorb_blocks() and sha3_keccakf(). If you could enable the
following:
CONFIG_CRYPTO_LIB_SHA3_KUNIT_TEST=y
CONFIG_CRYPTO_LIB_BENCHMARK=y
... and then show the results for sha3_kunit before and after the
commit
"lib/crypto: s390/sha3: Migrate optimized code into library", that
would
be helpful.
In v2, I'll look into providing overrides for the one-shot functions
sha3_{224,256,384,512}() too. If it works out, I'll ask you to re-test
with that additional change as well.
- Eric
I pulled your repository and checked out the branch sha3-lib-v1 and
while the kernel build runs I get link errors:
ld: crypto/sha3.o: in function `crypto_sha3_512_digest':
/root/ebiggers-linux/crypto/sha3.c:80:(.text+0xaa): undefined reference
to `sha3_512'
ld: crypto/sha3.o: in function `crypto_sha3_384_digest':
/root/ebiggers-linux/crypto/sha3.c:73:(.text+0xea): undefined reference
to `sha3_384'
ld: crypto/sha3.o: in function `crypto_sha3_256_digest':
/root/ebiggers-linux/crypto/sha3.c:66:(.text+0x12a): undefined reference
to `sha3_256'
ld: crypto/sha3.o: in function `crypto_sha3_224_digest':
/root/ebiggers-linux/crypto/sha3.c:59:(.text+0x1aa): undefined reference
to `sha3_224'
ld: crypto/sha3.o: in function `sha3_final':
/root/ebiggers-linux/./include/crypto/sha3.h:188:(.text+0x1f0):
undefined reference to `__sha3_squeeze'
ld: crypto/sha3.o: in function `sha3_update':
/root/ebiggers-linux/./include/crypto/sha3.h:172:(.text+0x232):
undefined reference to `__sha3_update'
with a s390 defconfig kernel configuration an a s390 debug_defconfig
kernel configuration.