Re: [PATCH 1/2] x86/fpu: Reset MXCSR to default in kernel_fpu_begin()

From: Andy Lutomirski
Date: Mon Jun 22 2020 - 14:40:54 EST


On Mon, Jun 22, 2020 at 11:38 AM Dave Hansen <dave.hansen@xxxxxxxxx> wrote:
>
> On 6/22/20 11:33 AM, Andy Lutomirski wrote:
> > Suppose you do:
> >
> > double x = 1.0;
> >
> > kernel_fpu_begin();
> >
> > x += 2.0;
> >
> > We want to make sure that GCC puts things in the right order. I
> > suppose that even a memory clobber is insufficient here, though.
>
> Even with CONFIG_PREEMPT disabled, we still have:
>
> #define preempt_disable() barrier()
>
> I don't see us supporting preemptible kernel_fpu regions any time soon,
> so shouldn't this be sufficient now and for a long time?

That's on the wrong end of the function. It'sL

preempt_disable();
LDMXCSR;
<-- some kind of barrier here might be nice

--Andy