All of lore.kernel.org
 help / color / mirror / Atom feed
From: Atul Kumar Pant <atulpant.linux@gmail.com>
To: John Stultz <jstultz@google.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Juri Lelli <juri.lelli@redhat.com>,
	Valentin Schneider <valentin.schneider@arm.com>,
	Connor O'Brien <connoro@google.com>,
	Joel Fernandes <joelagnelf@nvidia.com>,
	Qais Yousef <qyousef@layalina.io>, Ingo Molnar <mingo@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Valentin Schneider <vschneid@redhat.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Ben Segall <bsegall@google.com>,
	Zimuzo Ezeozue <zezeozue@google.com>,
	Mel Gorman <mgorman@suse.de>, Will Deacon <will@kernel.org>,
	Waiman Long <longman@redhat.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	Metin Kaya <Metin.Kaya@arm.com>,
	Xuewen Yan <xuewen.yan94@gmail.com>,
	K Prateek Nayak <kprateek.nayak@amd.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Suleiman Souhlal <suleiman@google.com>,
	Andrea Righi <arighi@nvidia.com>,
	kuyo chang <kuyo.chang@mediatek.com>, hupu <hupu.gm@gmail.com>,
	kernel-team@android.com
Subject: Re: [RESEND][PATCH v31 8/9] sched: Add deactivated (sleeping) owner handling to find_proxy_task()
Date: Wed, 12 Aug 2026 07:51:38 +0530	[thread overview]
Message-ID: <anvYsv/zwcUXyBO/@atom0118> (raw)
In-Reply-To: <CANDhNCp58SJPNYW_dkYSbKvwoci+9sD6w1SGutB4NYVjgFUW1g@mail.gmail.com>

On Tue, Aug 11, 2026 at 12:56:53PM -0700, John Stultz wrote:
> On Tue, Aug 11, 2026 at 12:09 PM Atul Kumar Pant
> <atulpant.linux@gmail.com> wrote:
> > On Fri, Aug 07, 2026 at 03:52:14AM +0000, John Stultz wrote:
> > > +static void do_activate_blocked_waiter(struct rq *target_rq, struct task_struct *p, int en_flags)
> > > +{
> > > +     unsigned int state;
> > > +     struct rq_flags rf;
> > > +     int target_cpu = cpu_of(target_rq);
> > > +
> > > +     scoped_guard (raw_spinlock_irqsave, &p->pi_lock) {
> > > +             state = READ_ONCE(p->__state);
> > > +             /* Avoid racing with ttwu */
> > > +             if (state == TASK_WAKING)
> > > +                     return;
> > > +
> > > +             if (READ_ONCE(p->on_rq)) {
> > > +                     /*
> > > +                      * We raced with a non mutex handoff activation of p.
> > > +                      * That activation will also take care of activating
> > > +                      * all of the tasks after p in the blocked_head list,
> > > +                      * so we're done here.
> > > +                      */
> > > +                     return;
> > > +             }
> > > +             if (task_on_cpu(task_rq(p), p)) {
> > > +                     /*
> > > +                      * Its possible this activation is very late, and
> > > +                      * we already were woken up and are running on a
> > > +                      * different cpu. If that task blocked, it could be
> > > +                      * dequeued (so on_rq == 0), but still on_cpu.
> > > +                      * Bail in this case, as we definitely don't want to
> > > +                      * activate a task when its on_cpu elsewhere.
> > > +                      */
> > > +                     return;
> > > +             }
> >
> >         Hi John,
> >         one doubt, can It happen that this task 'p' has already finished running
> >         in between the time when it was was picked from blocked list
> >         (activate_blocked_waiters()) and this function? I mean, is it possible
> >         for 'p' that task_is_blocked() is false?
> 
> So, I'm not totally sure I have in mind what you do, but yes. Most of
> the conditions we are checking in the above are dealing with
> blocked-waiter tasks being woken up in parallel with teh
> activate_blocked_waiters() logic.
> 
> Are you suggesting that we should include an additional check on
> is_blocked before we do the activation?
> 
> I guess I could see the concern if the task was woken in parallel and
> ran and and then went to sleep (so its not on_rq or on_cpu). Normally
> spuriously activating the task wouldn't have much impact (it would
> wake, loop and go back to sleep), but I guess there is the risk here
> that since we're activating it to be a donor on the waking lock
> owner's rq here, the target_rq may not be in the donors affinity mask,
> so that could be a problem.
> 
> So yeah, it seems an extra is_blocked check is probably warrented
> here. Thanks for pointing that out!
Yes the condition you described above is same that I was trying to
convey (affinity mask may not contain target_rq). We can probably
add a check to confirm whether the picked task 'p' is still blocked or
not.
Thank you for taking time and going through the comment.

Thanks,
Atul

> 
> If that wasn't what you had in mind, please do let me know!
> 
> thanks
> -john

  reply	other threads:[~2026-08-12  2:21 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-07  3:52 [RESEND][PATCH v31 0/9] Sleeping Owner Handling for Proxy Execution (v31) John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 1/9] sched/deadline: Ignore proxy-exec sched_yield() John Stultz
2026-08-10 15:56   ` Peter Zijlstra
2026-08-10 19:25     ` John Stultz
2026-08-11  3:55       ` K Prateek Nayak
2026-08-11  6:10         ` K Prateek Nayak
2026-08-11  8:33         ` Juri Lelli
2026-08-07  3:52 ` [RESEND][PATCH v31 2/9] sched/core: Don't steal a proxy-exec donor John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 3/9] sched/core: Avoid migrating blocked_on tasks John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 4/9] sched/core: Don't proxy-exec unmatched cookie lock owners John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 5/9] sched: Switch rq->next_class in proxy_reset_donor() John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 6/9] sched: Break out core of attach_tasks() helper into sched.h John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 7/9] sched: Migrate whole chain in proxy_migrate_task() John Stultz
2026-08-07  3:52 ` [RESEND][PATCH v31 8/9] sched: Add deactivated (sleeping) owner handling to find_proxy_task() John Stultz
2026-08-11 19:08   ` Atul Kumar Pant
2026-08-11 19:56     ` John Stultz
2026-08-12  2:21       ` Atul Kumar Pant [this message]
2026-08-07  3:52 ` [RESEND][PATCH v31 9/9] sched: Distinguish proxy activations from wakeups John Stultz

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=anvYsv/zwcUXyBO/@atom0118 \
    --to=atulpant.linux@gmail.com \
    --cc=Metin.Kaya@arm.com \
    --cc=arighi@nvidia.com \
    --cc=boqun.feng@gmail.com \
    --cc=bsegall@google.com \
    --cc=connoro@google.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=dietmar.eggemann@arm.com \
    --cc=hupu.gm@gmail.com \
    --cc=joelagnelf@nvidia.com \
    --cc=jstultz@google.com \
    --cc=juri.lelli@redhat.com \
    --cc=kernel-team@android.com \
    --cc=kprateek.nayak@amd.com \
    --cc=kuyo.chang@mediatek.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=qyousef@layalina.io \
    --cc=rostedt@goodmis.org \
    --cc=suleiman@google.com \
    --cc=tglx@linutronix.de \
    --cc=valentin.schneider@arm.com \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    --cc=will@kernel.org \
    --cc=xuewen.yan94@gmail.com \
    --cc=zezeozue@google.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.