From: liuwenfang <liuwenfang@honor.com>
To: 'Tejun Heo' <tj@kernel.org>
Cc: 'David Vernet' <void@manifault.com>,
'Andrea Righi' <arighi@nvidia.com>,
'Changwoo Min' <changwoo@igalia.com>,
'Ingo Molnar' <mingo@redhat.com>,
'Peter Zijlstra' <peterz@infradead.org>,
'Juri Lelli' <juri.lelli@redhat.com>,
'Vincent Guittot' <vincent.guittot@linaro.org>,
'Dietmar Eggemann' <dietmar.eggemann@arm.com>,
'Steven Rostedt' <rostedt@goodmis.org>,
'Ben Segall' <bsegall@google.com>, 'Mel Gorman' <mgorman@suse.de>,
'Valentin Schneider' <vschneid@redhat.com>,
"'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH v3 1/3] sched_ext: Fix pnt_seq calculation
Date: Mon, 18 Aug 2025 10:45:55 +0000 [thread overview]
Message-ID: <b1898ea1365d460e89b64989304ea0f7@honor.com> (raw)
In-Reply-To: <aJqLPLxpNgKWbFmu@slm.duckdns.org>
> Hello,
>
> On Mon, Aug 11, 2025 at 02:03:16PM -1000, 'Tejun Heo' wrote:
> ...
> > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index
> > > 0fb9bf995..50d757e92 100644
> > > --- a/kernel/sched/fair.c
> > > +++ b/kernel/sched/fair.c
> > > @@ -8887,6 +8887,9 @@ pick_next_task_fair(struct rq *rq, struct
> > > task_struct *prev, struct rq_flags *rf
> > >
> > > __put_prev_set_next_dl_server(rq, prev, p);
> > >
> > > + if (scx_enabled())
> > > + scx_put_prev_set_next(rq, prev, p);
> > > +
> > > /*
> > > * Because of the set_next_buddy() in dequeue_task_fair() it is rather
> > > * likely that a next task is from the same cgroup as the current.
> > > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index
> > > 47972f34e..bcb7f175c 100644 @@ -2465,6 +2470,9 @@ static inline void
> > > put_prev_set_next_task(struct rq *rq,
> > >
> > > __put_prev_set_next_dl_server(rq, prev, next);
> > >
> > > + if (scx_enabled())
> > > + scx_put_prev_set_next(rq, prev, next);
> > > +
> > > if (next == prev)
> > > return;
> >
> > I'm not sure these are the best spots to call this function. How about
> > putting it in the CONFIG_SCHED_CLASS_EXT section in prev_balance()?
> > The goal of the seq counter is to wait for scheduler path to be
> > entered, so that's good enough a spot and there already is scx
> > specific section, so it doesn't add too much noise.
>
> Strike that. I see that we need a hook after task is picked to resolve the bug
> around cpu_released. Can you please move scx_enabled() test into
> scx_put_prev_set_next() and add a helper which calls both
> __put_prev_set_next_dl_server() and scx_put_prev_set_next() so that the call
> doesn't have to be added to two places?
Thanks for your feedback.
__put_prev_set_next is added here as the helper, the fixed function is:
+void scx_put_prev_set_next(struct rq *rq, struct task_struct *prev,
+ struct task_struct *next)
+{
+ if (!scx_enabled())
+ return;
+
+#ifdef CONFIG_SMP
+ /*
+ * Pairs with the smp_load_acquire() issued by a CPU in
+ * kick_cpus_irq_workfn() who is waiting for this CPU to perform a
+ * resched.
+ */
+ smp_store_release(&rq->scx.pnt_seq, rq->scx.pnt_seq + 1);
+#endif
+}
+static inline void __put_prev_set_next(struct rq *rq,
+ struct task_struct *prev,
+ struct task_struct *next)
+{
+ __put_prev_set_next_dl_server(rq, prev, next);
+ scx_put_prev_set_next(rq, prev, next);
+}
+
static inline void put_prev_set_next_task(struct rq *rq,
struct task_struct *prev,
struct task_struct *next)
{
WARN_ON_ONCE(rq->curr != prev);
- __put_prev_set_next_dl_server(rq, prev, next);
+ __put_prev_set_next(rq, prev, next);
if (next == prev)
pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf
if (prev->sched_class != &fair_sched_class)
goto simple;
- __put_prev_set_next_dl_server(rq, prev, p);
+ __put_prev_set_next(rq, prev, p);
Any suggestions will be appreciated and a formal patch will be sent out later.
>
> Thanks.
>
> --
> Tejun
Thanks.
Wenfang
next prev parent reply other threads:[~2025-08-18 10:45 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-21 4:09 [PATCH] sched_ext: Fix cpu_released while RT task and SCX task are scheduled concurrently liuwenfang
2025-06-23 19:50 ` 'Tejun Heo'
2025-06-28 6:50 ` [PATCH v2 1/2] " liuwenfang
2025-07-17 21:38 ` 'Tejun Heo'
2025-07-20 9:20 ` liuwenfang
2025-07-20 9:38 ` [PATCH v3 2/3] " liuwenfang
2025-08-12 1:26 ` 'Tejun Heo'
2025-07-20 9:41 ` [PATCH v3 3/3] sched_ext: Fix cpu_released while changing sched policy of the running task liuwenfang
2025-08-12 1:31 ` 'Tejun Heo'
2025-08-19 6:52 ` [PATCH v4 1/3] sched_ext: Fix pnt_seq calculation when picking the next task liuwenfang
2025-08-19 6:55 ` [PATCH v4 2/3] sched_ext: Fix cpu_released while RT task and SCX task are scheduled concurrently liuwenfang
2025-08-19 7:07 ` [PATCH v4 3/3] sched_ext: Fix cpu_released while changing sched policy of the running task liuwenfang
2025-08-19 7:47 ` [PATCH v4 2/3] sched_ext: Fix cpu_released while RT task and SCX task are scheduled concurrently Peter Zijlstra
2025-08-19 8:47 ` 回复: " liuwenfang
2025-08-19 10:08 ` Peter Zijlstra
2025-08-20 0:28 ` 'Tejun Heo'
2025-08-20 9:18 ` Peter Zijlstra
2025-08-20 16:52 ` 'Tejun Heo'
2025-06-28 7:20 ` [PATCH v2 2/2] sched_ext: Fix cpu_released while changing sched policy of the running task liuwenfang
2025-07-17 21:48 ` 'Tejun Heo'
2025-07-18 9:06 ` liuwenfang
2025-07-20 9:36 ` [PATCH v3 1/3] sched_ext: Fix pnt_seq calculation liuwenfang
2025-08-12 0:03 ` 'Tejun Heo'
2025-08-12 0:30 ` 'Tejun Heo'
2025-08-18 10:45 ` liuwenfang [this message]
2025-08-18 17:43 ` 'Tejun Heo'
2025-08-19 7:41 ` liuwenfang
2025-08-18 17:47 ` Peter Zijlstra
2025-08-19 7:36 ` liuwenfang
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=b1898ea1365d460e89b64989304ea0f7@honor.com \
--to=liuwenfang@honor.com \
--cc=arighi@nvidia.com \
--cc=bsegall@google.com \
--cc=changwoo@igalia.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tj@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=void@manifault.com \
--cc=vschneid@redhat.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.