Re: linux-next: Tree for Jul 31 - s390 crypto build breakage
From: Stephen Rothwell
Date: Thu Aug 01 2019 - 20:20:32 EST
On Thu, 1 Aug 2019 20:28:56 +0300 Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote:
> On Thu, 1 Aug 2019 at 15:28, Heiko Carstens <heiko.carstens@xxxxxxxxxx> wrote:
> > On Wed, Jul 31, 2019 at 01:44:54PM +0200, Heiko Carstens wrote:
> > > On Wed, Jul 31, 2019 at 09:32:16PM +1000, Herbert Xu wrote:
> > > > On Wed, Jul 31, 2019 at 01:15:20PM +0200, Heiko Carstens wrote:
> > > > >
> > > > > However that doesn't fix the simd.h header file breakage with the
> > > > > second patch :)
> > > >
> > > > That fix should be there now too.
> > >
> > > Yes, works now. Thank you!
> > Still not... with linux-next as of today I get this (s390 defconfig):
> > ERROR: "crypto_aegis128_decrypt_chunk_simd" [crypto/aegis128.ko] undefined!
> > ERROR: "crypto_aegis128_update_simd" [crypto/aegis128.ko] undefined!
> > ERROR: "crypto_aegis128_encrypt_chunk_simd" [crypto/aegis128.ko] undefined!
> > scripts/Makefile.modpost:105: recipe for target 'modules-modpost' failed
> Hello Heiko,
> Apologies for the breakage. The first two fixes addressed obvious
> shortcomings in my code, but with this issue, I'm a bit puzzled tbh.
> The calls to these missing functions should be optimized away, since
> have_simd never gets assigned if CONFIG_CRYPTO_AEGIS128_SIMD is not
> defined, but for some reason, this isn't working. Which version of GCC
> are you using?
> Also, could you please try whether the patch below fixes the problem? Thanks
It might be time to revert all this series and try again. The
implementation seems to have not been well thought through from a kernel
building point of view. For a start the two commits
7cdc0ddbf74a ("crypto: aegis128 - add support for SIMD acceleration")
ecc8bc81f2fb ("crypto: aegis128 - provide a SIMD implementation based on NEON intrinsics")
seem to be in the wrong order (function used in the first before being
defined in the second). There are a series of declarations of external
functions in crypto/aegis128-core.c that should be in a header file.
And there was the assumption that asm/simd.h was available everywhere.
Also crypto_aegis128_decrypt_chunk_simd() is referenced in a structure
initialisation (unprotected by any CONFIG_ variable - and so will be
referenced even if it does not exist). The compiler will have a hard
time knowing that "have_simd" is effectively a constant zero (and
crypto_simd_usable() is not constant).
Description: OpenPGP digital signature