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>,
	David Carlier <devnexen@gmail.com>,
	Emil Tsalapatis <emil@etsalapatis.com>,
	sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH sched_ext/for-7.3] sched_ext: Set up ops.sub_ecaps_updated() dispatch context on the executing CPU
Date: Fri, 14 Aug 2026 20:52:21 +0200	[thread overview]
Message-ID: <an9j5Zq7zgt2Wlk5@gpd4> (raw)
In-Reply-To: <874500f5212b5d192092950ea8d284b8@kernel.org>

Hi Tejun,

On Fri, Aug 14, 2026 at 07:46:46AM -1000, Tejun Heo wrote:
> scx_process_sync_ecaps() sets up the dispatch context for
> ops.sub_ecaps_updated() in the target cpu's pcpu context recovered from the
> llist node. However, the context is per executing cpu: the dispatch kfuncs
> resolve it with this_cpu_ptr() and the dispatch buffer lives in it. What the
> dispatches target is determined by the rq recorded in the context, not by
> which cpu's context it is. Under core scheduling the pick runs balance_one()
> for sibling rqs, so a sync processed for a sibling invokes the op with the
> executing cpu's context not set up and its dispatch kfuncs misoperate on a
> NULL or stale rq.
> 
> Set up the executing cpu's dsp_ctx instead, matching scx_dispatch_sched().
> The recorded rq keeps the dispatches targeting the synced cpu.
> 
> Fixes: b81a6c018cde ("sched_ext: Add sub_ecaps_updated() effective-cap change notifier")
> Reported-by: David Carlier <devnexen@gmail.com>
> Link: https://lore.kernel.org/all/20260813045931.8691-1-devnexen@gmail.com/
> Signed-off-by: Tejun Heo <tj@kernel.org>

Everything looks correct to me.

Reviewed-by: Andrea Righi <arighi@nvidia.com>

Thanks,
-Andrea

> ---
>  kernel/sched/ext/sub.c |    6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> --- a/kernel/sched/ext/sub.c
> +++ b/kernel/sched/ext/sub.c
> @@ -1017,11 +1017,15 @@ void scx_process_sync_ecaps(struct rq *r
>  		 * invocation is equivalent to the dispatch path and may drop
>  		 * and re-acquire the rq lock temporarily while the rest of
>  		 * @batch is held privately, see scx_discard_ecaps_to_sync().
> +		 * The dispatch kfuncs resolve their context on the executing
> +		 * cpu, which under core scheduling can differ from @rq's cpu,
> +		 * so the context is set up there. The rq recorded in it keeps
> +		 * the dispatches targeting @rq.
>  		 */
>  		if (ecaps != pcpu->reported_ecaps &&
>  		    SCX_HAS_OP(pcpu->sch, sub_ecaps_updated) &&
>  		    !scx_bypassing(pcpu->sch, cpu)) {
> -			struct scx_dsp_ctx *dspc = &pcpu->dsp_ctx;
> +			struct scx_dsp_ctx *dspc = &this_cpu_ptr(pcpu->sch->pcpu)->dsp_ctx;
>  
>  			dspc->rq = rq;
>  			/* stash @prev so nested dispatches can access it */
> 
> -- 
> 2.55.0

      parent reply	other threads:[~2026-08-14 18:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-14 17:46 [PATCH sched_ext/for-7.3] sched_ext: Set up ops.sub_ecaps_updated() dispatch context on the executing CPU Tejun Heo
2026-08-14 18:33 ` Tejun Heo
2026-08-14 18:52 ` Andrea Righi [this message]

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=an9j5Zq7zgt2Wlk5@gpd4 \
    --to=arighi@nvidia.com \
    --cc=changwoo@igalia.com \
    --cc=devnexen@gmail.com \
    --cc=emil@etsalapatis.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.