[lkml]   [2019]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH v9 00/27] x86: load FPU registers on return to userland
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.

> You'd still want the kernel thread to bracket fpu usage (or at least say
> that it is a kernel thread that always needs the fpu) to avoid having
> to save and restore the fpu registers on every context switch to/from
> a kernel thread.

I thing you misunderstood the code. A context switch between two kernel
threads never saves/restores the FPU register. This only happens if a
user task is involved and then only those FPU register (of the user
task) are saved and restored.

> David


 \ /
  Last update: 2019-04-04 16:15    [W:0.520 / U:7.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site