RE: [RFC PATCH 0/3] kernel: add support for 256-bit IO access
flat view
From: David Laight <hidden>
Date: 2018-03-20 15:09:58
Also in:
lkml
From: Andy Lutomirski
Sent: 20 March 2018 14:57
...
I'd rather see us finally finish the work that Rik started to rework
this differently. I'd like kernel_fpu_begin() to look like:
if (test_thread_flag(TIF_NEED_FPU_RESTORE)) {
return; // we're already okay. maybe we need to check
in_interrupt() or something, though?
} else {
XSAVES/XSAVEOPT/XSAVE;
set_thread_flag(TIF_NEED_FPU_RESTORE):
}
and kernel_fpu_end() does nothing at all.I guess it might need to set (clear?) the CFLAGS bit for a process that isn't using the fpu at all - which seems a sensible feature.
We take the full performance hit for a *single* kernel_fpu_begin() on an otherwise short syscall or interrupt, but there's no additional cost for more of them or for long-enough-running things that we schedule in the middle.
It might be worth adding a parameter to kernel_fpu_begin() to indicate which registers are needed, and a return value to say what has been granted. Then a driver could request AVX2 (for example) and use a fallback path if the register set isn't available (for any reason). A call from an ISR could always fail.
As I remember, the main hangup was that this interacts a bit oddly with PKRU, but that's manageable.
WTF PKRU ?? Dvaid