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.