On Tue, Jan 19, 2021 at 09:39:02AM -0800, Andy Lutomirski wrote: > The remaining callers of kernel_fpu_begin() in 64-bit kernels don't use 387 > instructions, so there's no need to sanitize the FPU state. Skip it to get > most of the performance we lost back. > > Reported-by: Krzysztof Olędzki <o...@ans.pl> > Signed-off-by: Andy Lutomirski <l...@kernel.org> > --- > arch/x86/include/asm/fpu/api.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h > index 38f4936045ab..435bc59d539b 100644 > --- a/arch/x86/include/asm/fpu/api.h > +++ b/arch/x86/include/asm/fpu/api.h > @@ -32,7 +32,19 @@ extern void fpregs_mark_activate(void); > /* Code that is unaware of kernel_fpu_begin_mask() can use this */ > static inline void kernel_fpu_begin(void) > { > +#ifdef CONFIG_X86_64 > + /* > + * Any 64-bit code that uses 387 instructions must explicitly request > + * KFPU_387. > + */ > + kernel_fpu_begin_mask(KFPU_MXCSR);
I'm also still sitting on this: git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/fpu what do we do with that?