[PATCH v2] arm64/xor: use EOR3 instructions when available

Ard Biesheuvel ardb at kernel.org
Tue Dec 14 00:19:57 PST 2021


+ Arnd

On Tue, 14 Dec 2021 at 03:37, Nathan Chancellor <nathan at kernel.org> wrote:
>
> Hi Ard,
>
> On Mon, Dec 13, 2021 at 03:02:52PM +0100, Ard Biesheuvel wrote:
> > Use the EOR3 instruction to implement xor_blocks() if the instruction is
> > available, which is the case if the CPU implements the SHA-3 extension.
> > This is about 20% faster on Apple M1 when using the 5-way version.
> >
> > Signed-off-by: Ard Biesheuvel <ardb at kernel.org>
>
> Our CI reported that this patch as commit ce9ba49a2460 ("arm64/xor: use
> EOR3 instructions when available") in the arm64 tree breaks
> allyesconfig:
>
> https://github.com/ClangBuiltLinux/continuous-integration2/runs/4514540083?check_suite_focus=true
>
> I also see this when building with GCC 11.2.0:
>
> WARNING: modpost: EXPORT symbol "xor_block_inner_neon" [vmlinux] version ...
> Is "xor_block_inner_neon" prototyped in <asm/asm-prototypes.h>?
> aarch64-linux-gnu-ld: arch/arm64/lib/xor-neon.o: relocation R_AARCH64_ABS32 against `__crc_xor_block_inner_neon' can not be used when making a shared object

I suspect this is another genksyms crash, preventing the
__crc_xor_block_inner_neon symbol from ever being emitted.

This is a recurring annoyance and I am not sure how to address this
properly. Arnd might have some thoughts on the matter as well.


> arch/arm64/lib/xor-neon.o:(.data+0x0): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data+0x18): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data+0x20): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x0): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x8): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x10): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x18): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x20): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x28): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x30): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x38): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x40): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(__patchable_function_entries+0x48): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.fini_array+0x0): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.init_array+0x0): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data..ro_after_init+0x8): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data..ro_after_init+0x18): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data..ro_after_init+0x20): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data..ro_after_init+0x28): dangerous relocation: unsupported relocation
> arch/arm64/lib/xor-neon.o:(.data..ro_after_init+0x30): dangerous relocation: unsupported relocation
>
> Cheers,
> Nathan



More information about the linux-arm-kernel mailing list