On Fri, Jan 13, 2023 at 03:12:33PM +0100, Vincent Guittot wrote: > @@ -12552,8 +12634,15 @@ int sched_group_set_latency(struct task_group *tg, s64 latency) > > for_each_possible_cpu(i) { > struct sched_entity *se = tg->se[i]; > + struct rq *rq = cpu_rq(i); > + struct rq_flags rf; > + > + rq_lock_irqsave(rq, &rf); > > + __dequeue_latency(se->cfs_rq, se); > WRITE_ONCE(se->latency_offset, latency); > + > + rq_unlock_irqrestore(rq, &rf); > } This seems asymmetric; maybe something like: queued = __dequeue_latency(..); WRITE_ONCE(...); if (queued) __enqueue_latency(...); ?