All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Righi <arighi@nvidia.com>
To: Tejun Heo <tj@kernel.org>
Cc: David Vernet <void@manifault.com>,
	Changwoo Min <changwoo@igalia.com>,
	Kuba Piecuch <jpiecuch@google.com>,
	sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] sched_ext: Initialize idle masks before ops.init()
Date: Mon, 3 Aug 2026 07:46:57 +0200	[thread overview]
Message-ID: <anArUap-URclDfww@gpd4> (raw)
In-Reply-To: <am-YVNN5Ga12zHpM@slm.duckdns.org>

Hi Tejun,

On Sun, Aug 02, 2026 at 09:19:48AM -1000, Tejun Heo wrote:
> Hello,
> 
> On Fri, Jul 31, 2026 at 08:23:33PM +0200, Andrea Righi wrote:
> > The built-in idle masks are reset with all online CPUs marked idle, but
> > idle state tracking starts only after the scheduler is fully enabled.
> > As a result, ops.init() can observe busy CPUs as idle, and those CPUs
> > remain incorrectly advertised until their next idle transition.
> > 
> > Enable built-in idle tracking before ops.init() and refresh every online
> > CPU under its rq lock. Once a CPU is refreshed, later transitions keep
> > its state accurate. Keep ops.update_idle() notifications disabled until
> > the scheduler is fully enabled.
> 
> While a sched is being loaded, bypass mode is on and when we get out of
> bypass mode, we set RENOTIFY and trigger kick each CPU, which, if the CPU
> has been or is entering idle, triggers ops.update_idle(). So, BPF
> implemented idle tracking gets the actual idle state update when bypass goes
> off, which makes sense. Would the problem you were seeing go away if we just
> clear all idle bits on load instead of setting them? The lifting of bypass
> mode at the end should set idle bits for all actually idle CPUs.

Yes, I think clearing the masks should be sufficient: it makes the initial state
conservative, so ops.init() sees no idle CPUs instead of potentially seeing busy
CPUs as idle.

Once __scx_enabled is set, exiting bypass arms the idle re-notification and
reschedules every online CPU, an idle-to-idle re-pick then updates the built-in
mask as well and triggers ops.update_idle(). Busy CPUs remain clear. The mask is
temporarily incomplete, including during ops.init(), but that should be safe and
it will quickly converge to the actual idle state. So everything should work.
I'll send a new version with this logic.

Thanks,
-Andrea

  reply	other threads:[~2026-08-03  5:47 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-31 18:23 [PATCHSET v3 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation Andrea Righi
2026-07-31 18:23 ` [PATCH 1/2] sched_ext: Initialize idle masks before ops.init() Andrea Righi
2026-08-02 19:19   ` Tejun Heo
2026-08-03  5:46     ` Andrea Righi [this message]
2026-07-31 18:23 ` [PATCH 2/2] selftests/sched_ext: Make allowed_cpus idle validation race-free Andrea Righi
  -- strict thread matches above, loose matches on Subject: below --
2026-07-31  8:59 [PATCHSET v2 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation Andrea Righi
2026-07-31  8:59 ` [PATCH 1/2] sched_ext: Initialize idle masks before ops.init() Andrea Righi
2026-07-31 10:47   ` Kuba Piecuch
2026-07-31 15:01     ` Andrea Righi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=anArUap-URclDfww@gpd4 \
    --to=arighi@nvidia.com \
    --cc=changwoo@igalia.com \
    --cc=jpiecuch@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sched-ext@lists.linux.dev \
    --cc=tj@kernel.org \
    --cc=void@manifault.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.