[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CANDhNCrPeJpNYtHEZY46etXb_c4H4dALELf2LbC1R8PnWJW97w@mail.gmail.com>
Date: Tue, 23 Sep 2025 16:34:13 -0700
From: John Stultz <jstultz@...gle.com>
To: K Prateek Nayak <kprateek.nayak@....com>
Cc: LKML <linux-kernel@...r.kernel.org>, Joel Fernandes <joelagnelf@...dia.com>,
Qais Yousef <qyousef@...alina.io>, Ingo Molnar <mingo@...hat.com>,
Peter Zijlstra <peterz@...radead.org>, Juri Lelli <juri.lelli@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>, Dietmar Eggemann <dietmar.eggemann@....com>,
Valentin Schneider <vschneid@...hat.com>, Steven Rostedt <rostedt@...dmis.org>,
Ben Segall <bsegall@...gle.com>, Zimuzo Ezeozue <zezeozue@...gle.com>, Mel Gorman <mgorman@...e.de>,
Will Deacon <will@...nel.org>, Waiman Long <longman@...hat.com>, Boqun Feng <boqun.feng@...il.com>,
"Paul E. McKenney" <paulmck@...nel.org>, Metin Kaya <Metin.Kaya@....com>,
Xuewen Yan <xuewen.yan94@...il.com>, Thomas Gleixner <tglx@...utronix.de>,
Daniel Lezcano <daniel.lezcano@...aro.org>, Suleiman Souhlal <suleiman@...gle.com>,
kuyo chang <kuyo.chang@...iatek.com>, hupu <hupu.gm@...il.com>, kernel-team@...roid.com
Subject: Re: [RESEND][PATCH v21 2/6] sched/locking: Add blocked_on_state to
provide necessary tri-state for proxy return-migration
On Thu, Sep 18, 2025 at 8:28 PM K Prateek Nayak <kprateek.nayak@....com> wrote:
> On 9/19/2025 4:27 AM, John Stultz wrote:
> >> I didn't know that was possible! Neat. Since cleanup.h has a note
> >> reading:
> >>
> >> ... the expectation is that usage of "goto" and cleanup helpers is
> >> never mixed in the same function.
> >>
> >> are there any concerns w.r.t. compiler versions etc. or am I just being
> >> paranoid?
> >
> > Hrrrrmmmm. I hadn't seen that detail. :/ I guess I was just lucky
> > it worked with my toolchain.
>
> I have been too. Maybe it is okay to use a goto if folks know what
> they are doing ¯\_(ツ)_/¯
>
> Another idea is to have:
>
> bool deactivate_donor = false;
>
> for (p = donor; task_is_blocked(p); p = owner) {
> guard(raw_spinlock)(...);
> ...
> if (<condition> {
> deactivate_donor = true;
> break;
> }
> ...
> }
> if (deactivate_donor)
> return proxy_deactivate(rq, donor);
>
> Can that work?
Yeah, I've reworked the logic to switch() on an action enum, which
will let us do something similar without gotos.
thanks
-john
Powered by blists - more mailing lists