Re: arm64: unhandled level 0 translation fault
From: Will Deacon
Date: Fri Dec 15 2017 - 09:27:27 EST
On Fri, Dec 15, 2017 at 02:30:00PM +0100, Geert Uytterhoeven wrote:
> On Fri, Dec 15, 2017 at 12:23 PM, Dave Martin <Dave.Martin@xxxxxxx> wrote:
> > The two important differences here seem to be
> >
> > 1) Staging the state via current->thread.fpsimd_state instead of loading
> > directly:
> >
> > - fpsimd_load_state(state);
> > + current->thread.fpsimd_state = *state;
> > + fpsimd_load_state(¤t->thread.fpsimd_state);
>
> The change above introduces the breakage.
I finally managed to reproduce this, but only by using the exact same
compiler as Geert:
https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.9.0/x86_64-gcc-4.9.0-nolibc_aarch64-linux.tar.xz
I then reliably see the problem if I run:
# /usr/bin/update-ca-certificates
from Debian Jessie.
Note that my normal toolchain (Linaro 7.1.1 build) works fine and also
if I use the toolchain above but disable CONFIG_ARM64_CRYPTO then things
work too.
So there's some toolchain-specific interaction between this change and the
crypto code...
Will