Re: [PATCH 1/7] x86/fpu: Simplify the fpu->last_cpu logic and rename it to fpu->fpregs_cached

From: Ingo Molnar
Date: Thu Jan 26 2017 - 10:10:06 EST



* Rik van Riel <riel@xxxxxxxxxx> wrote:

> On Thu, 2017-01-26 at 12:26 +0100, Ingo Molnar wrote:
>
> > index c56fb57f2991..7eb2f3041fde 100644
> > --- a/kernel/sched/core.c
> > +++ b/kernel/sched/core.c
> > @@ -1253,6 +1253,8 @@ void set_task_cpu(struct task_struct *p,
> > unsigned int new_cpu)
> >   p->sched_class->migrate_task_rq(p);
> >   p->se.nr_migrations++;
> >   perf_event_task_migrate(p);
> > +
> > + arch_task_migrate(p);
> >   }
> >
>
> Does it really count as a "simplification" if you add a
> scheduler callback?
>
> This code does not seem any easier to understand than
> the old code...

See the extra commit I added on top:

7deff4369276 x86/fpu: Unify the naming of the FPU register cache validity flags

which makes it clearer, we now have:

->fpregs_owner [bool]
fpregs_owner_ctx [ptr]

That are set to 1 and the context pointer when a task with no FPU state is
scheduled in and where the state of the previous task is preserved (cached) in the
FPU registers - and which FPU register state cache can be invalidated after this
by clearing any of the two flags.

That should make its overall meaning clearer, in that they represent a single
'cache' where the cache validity flag is split into two copies, where any of which
can be used to invalidate the cache.

Thanks,

Ingo