Re: [PATCH v9 00/27] x86: load FPU registers on return to userland

From: Andy Lutomirski
Date: Thu Apr 04 2019 - 10:26:53 EST


On Thu, Apr 4, 2019 at 7:14 AM Sebastian Andrzej Siewior
<bigeasy@xxxxxxxxxxxxx> wrote:
>
> On 2019-04-04 14:01:43 [+0000], David Laight wrote:
> > From: Sebastian Andrzej Siewior
> > > Sent: 03 April 2019 17:41
> > ...
> > > To access the FPU registers in kernel we need:
> > > - disable preemption to avoid that the scheduler switches tasks. By
> > > doing so it would set TIF_NEED_FPU_LOAD and the FPU registers would be
> > > not valid.
> > > - disable BH because the softirq might use kernel_fpu_begin() and then
> > > set TIF_NEED_FPU_LOAD instead loading the FPU registers on completion.
> >
> > Is there a possible optimisation here for kernel threads?
> > Since there is no 'user FP state' the 'kernel FP state' can
> > be saved by a task switch or softirq.
>
> There is no such thing as "kernel FP state" that is saved.
>

I think that David was asking whether we could make kernel_fpu_begin()
regions sometimes be preemptible. The answer is presumably yes, but I
think that should be a separate effort, and it should be justified
with improved performance above and beyond what we get with Jason's
simd_get() stuff.