Re: [PATCH v2 1/6] sched/cache: Keep nr_pref_llc_running in the runnable domain

From: Peter Zijlstra

Date: Tue Sep 22 2026 - 03:30:49 EST


On Mon, Sep 21, 2026 at 05:37:22PM -0700, Tim Chen wrote:
> @@ -6395,15 +6429,27 @@ static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq);
>
> static void set_delayed(struct sched_entity *se)
> {
> - se->sched_delayed = 1;
> -
> /*
> * Delayed se of cfs_rq have no tasks queued on them.
> * Do not adjust h_nr_runnable since __dequeue_task()
> * will account it for blocked tasks.
> + *
> + * This check can be removed because when flat pick
> + * patches get merged as only task can get delayed,
> + * same for clear_delayed().
> */
> - if (!entity_is_task(se))
> + if (!entity_is_task(se)) {
> + se->sched_delayed = 1;
> return;
> + }

This is dead code. In Linus' tree, where this will be applied, this can
never happen. A possible backport of this fix however will need to take
care.

> +
> + /*
> + * Drop a task leaving the runnable set.
> + * Needs to be called before sched_delayed is set.
> + * clear_delayed() mirrors this after clearing the flag.
> + */
> + pref_llc_running_dec(rq_of(cfs_rq_of(se)), task_of(se));
> + se->sched_delayed = 1;
>
> for_each_sched_entity(se) {
> struct cfs_rq *cfs_rq = cfs_rq_of(se);