On 23/10/20 11:12, Peter Zijlstra wrote: > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -1732,6 +1732,8 @@ void migrate_disable(void) > return; > } > > + trace_sched_migrate_disable_tp(p); > + > preempt_disable(); > this_rq()->nr_pinned++; > p->migration_disabled = 1; > @@ -1764,6 +1766,8 @@ void migrate_enable(void) > p->migration_disabled = 0; > this_rq()->nr_pinned--; > preempt_enable(); > + > + trace_sched_migrate_enable_tp(p);
Don't you want those directly after the ->migration_disabled write? esp. for migrate_enable(), if that preempt_enable() leads to a context switch then the disable->enable deltas won't reflect the kernel view. That delta may indeed include the time it took to run the stopper and fix the task's affinity on migrate_enable(), but it could include all sorts of other higher-priority tasks. > } > EXPORT_SYMBOL_GPL(migrate_enable);

