| From | Andy Lutomirski <> | Date | Tue, 13 Jan 2015 09:18:22 -0800 | Subject | Re: [RFC PATCH 04/11] x86,fpu: defer FPU restore until return to userspace |
| |
On Tue, Jan 13, 2015 at 9:11 AM, Oleg Nesterov <oleg@redhat.com> wrote: > On 01/11, riel@redhat.com wrote: >> >> Defer restoring the FPU state, if so desired, until the task returns to >> userspace. > > And I have another concern. > > Afaocs with this patch the idle threads will run with TIF_LOAD_FPU set but > without fpu.has_fpu.
Yuck. IMO there are still too many possible states.
AFAICS the sensible states for a task are:
- Task is current on some cpu and FPU is loaded into that cpu. - Task is current on some cpu and FPU is in memory. - Task is current on some cpu and FPU is loaded into a different cpu. - Task is not current and FPU is in memory. - Task is not current and FPU is loaded into some cpu.
Am I missing anything? (In lazy mode, there are a few more involving CR0.TS.)
That's five states, plus an optional cpu number. But we have tons of state variable that can express all kinds of nonsense things.
If we asserted that we were in a sensible state and fixed the things that exited the sensible states, maybe this would be easier to understand and debug.
--Andy
|