Re: [PATCH 1/2] sched/core: Allow newidle for core-sched
From: Peter Zijlstra
Date: Thu Jun 25 2026 - 08:46:26 EST
On Thu, Jun 25, 2026 at 05:26:03AM +0530, K Prateek Nayak wrote:
> ... or we can return a RETRY_TASK when newidle balance succeeds too to
> force a core-wide pick when core scheduling is enabled like:
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 0d212bf04885..e393aed58bfa 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -9946,8 +9946,16 @@ struct task_struct *pick_task_fair(struct rq *rq, struct rq_flags *rf)
> if (rq_modified_above(rq, &fair_sched_class))
> return RETRY_TASK;
>
> - if (cfs_rq->nr_queued)
> + if (cfs_rq->nr_queued) {
> + /*
> + * Force a core-wide pick if newidle
> + * balance managed to pull a task since
> + * the lock was dropped.
> + */
> + if (sched_core_enabled(rq))
> + return RETRY_TASK;
> goto again;
> + }
>
> return NULL;
> }
This has forward progress issues. You can ping-pong he one task back and
forth and never actually pick anything.