From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Shrikanth Hegde <sshegde@linux.ibm.com>,
Jirka Hladky <jhladky@redhat.com>,
paulmck@kernel.org
Cc: maddy@linux.ibm.com, linuxppc-dev@lists.ozlabs.org,
mpe@ellerman.id.au, npiggin@gmail.com, bigeasy@linutronix.de,
will@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 1/1] powerpc: enable dynamic preemption
Date: Fri, 31 Jul 2026 07:03:02 +0200 [thread overview]
Message-ID: <972db4f1-406b-477b-895e-59ffc643e384@kernel.org> (raw)
In-Reply-To: <57d9de4a-65aa-44cf-9024-de4e5bdd1971@linux.ibm.com>
Le 30/07/2026 à 19:10, Shrikanth Hegde a écrit :
> Hi Jirka, Paul,
>
>
> +cc will
>
> On 7/30/26 8:38 PM, Jirka Hladky wrote:
>> On Thu, Jul 30, 2026 at 4:53 PM Paul E. McKenney <paulmck@kernel.org>
>> wrote:
>>> But is this really a fundamental RISC cost? For example, does arm64
>>> see the same performance issues?
>>
>> We tested arm64 (Ampere Altra Max) with the same controlled
>> experiment -- two 6.18 kernels, both voluntary, differing only in
>> PREEMPT_DYNAMIC:
>>
>> Arch PREEMPT_DYNAMIC kill bogo-ops/sec Delta
>> ------- --------------- ----------------- -----
>> ppc64le off 108,836
>> ppc64le on 68,197 -37.3%
>> aarch64 off 5,538
>> aarch64 on 5,082 -8.2%
>>
>> arm64 sees -8.2% vs ppc64le's -37.3%. So arm64 is affected but
>> much less severely.
>
> Ouch!. But that's good to know.
Might be a stupid question, but what is your .config ?
Are you sure it doesn't contain CONFIG_DEBUG_PREEMPT ?
>
>>
>>> In particular, I can see why the preempt_count() operations need to be
>>> interrupt-safe, but I don't see why you would need barriers. And
>>> doesn't powerpc still use software interrupt disabling? If so, why
>>> not use that to simply software-disable interrupts around the
>>> preempt_count() operations?
>
> Barrier are in core implementation, not in arch specific.
>
> #ifdef CONFIG_PREEMPT_COUNT
> #define preempt_disable() \
> do { \
> preempt_count_inc(); \
> barrier(); \
> } while (0)
>
>
> #ifdef CONFIG_PREEMPTION
> #define preempt_enable() \
> do { \
> barrier(); \
> if (unlikely(preempt_count_dec_and_test())) \
> __preempt_schedule(); \
> } while (0)
>
>
>
>>>
>>> What am I missing here?
>>
>> That's a good question -- I don't know enough about the powerpc
>> preempt_count implementation to answer this. Shrikanth, could you
>> comment on whether removing the barriers or using software interrupt
>> disabling around preempt_count is feasible?
>>
>> Thank you
>> Jirka
>>
>
> PowerPC currently uses asm-generic implementation which is probably sub-
> optimal
> w.r.t to check of need_resched.
>
> When i see ARM's implementation, i see there is trick of splitting it
> into two.
>
> union {
> u64 preempt_count; /* 0 => preemptible, <0
> => bug */
> struct {
> #ifdef CONFIG_CPU_BIG_ENDIAN
> u32 need_resched;
> u32 count;
> #else
> u32 count;
> u32 need_resched;
> #endif
> } preempt;
> };
>
>
> Seeing Will's changelog is on similar direction.
>
> 396244692232 arm64: preempt: Provide our own implementation of asm/
> preempt.h
> "The asm-generic/preempt.h implementation doesn't make use of the
> PREEMPT_NEED_RESCHED flag, since this can interact badly with load/store
> architectures which rely on the preempt_count word being unchanged across
> an interrupt.
>
> However, since we're a 64-bit architecture and the preempt count is
> only 32 bits wide, we can simply pack it next to the resched flag and
> load the whole thing in one go, so that a dec-and-test operation doesn't
> need to load twice. "
>
> I am speculating this might help solve for ppc64 too. But i don't have a
> system
> to try this right now, will get back once i do
next prev parent reply other threads:[~2026-07-31 5:03 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-10 18:43 [PATCH v4 0/1] powerpc: Enable dynamic preemption Shrikanth Hegde
2025-02-10 18:43 ` [PATCH v4 1/1] powerpc: enable " Shrikanth Hegde
2026-07-26 18:33 ` Jirka Hladky
2026-07-27 4:18 ` Shrikanth Hegde
2026-07-27 10:13 ` Jirka Hladky
2026-07-27 10:28 ` Shrikanth Hegde
2026-07-27 10:35 ` Christophe Leroy (CS GROUP)
2026-07-27 16:12 ` Paul E. McKenney
2026-07-27 10:59 ` Jirka Hladky
2026-07-27 11:03 ` Shrikanth Hegde
2026-07-27 12:34 ` Shrikanth Hegde
2026-07-27 16:07 ` Paul E. McKenney
2026-07-27 16:50 ` Jirka Hladky
2026-07-27 17:10 ` Shrikanth Hegde
2026-07-27 18:29 ` Christophe Leroy (CS GROUP)
2026-07-28 5:27 ` Shrikanth Hegde
2026-07-28 16:21 ` Paul E. McKenney
2026-07-28 16:30 ` Paul E. McKenney
2026-07-30 13:01 ` Shrikanth Hegde
2026-07-30 14:51 ` Paul E. McKenney
2026-07-28 0:26 ` Jirka Hladky
2026-07-28 5:11 ` Shrikanth Hegde
2026-07-28 14:19 ` Jirka Hladky
2026-07-30 6:44 ` Shrikanth Hegde
2026-07-30 12:08 ` Jirka Hladky
2026-07-30 14:47 ` Paul E. McKenney
2026-07-30 15:08 ` Jirka Hladky
2026-07-30 16:26 ` Paul E. McKenney
2026-07-30 17:10 ` Shrikanth Hegde
2026-07-30 17:26 ` Paul E. McKenney
2026-07-30 18:40 ` Segher Boessenkool
2026-07-31 4:59 ` Christophe Leroy (CS GROUP)
2026-07-31 5:03 ` Christophe Leroy (CS GROUP) [this message]
2026-07-31 7:18 ` Jirka Hladky
2026-07-31 8:02 ` Shrikanth Hegde
2026-07-31 13:50 ` Jirka Hladky
2026-07-31 17:57 ` Shrikanth Hegde
2026-07-31 18:11 ` Paul E. McKenney
2026-08-03 4:51 ` Shrikanth Hegde
2026-08-03 15:27 ` Paul E. McKenney
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=972db4f1-406b-477b-895e-59ffc643e384@kernel.org \
--to=chleroy@kernel.org \
--cc=bigeasy@linutronix.de \
--cc=jhladky@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=paulmck@kernel.org \
--cc=sshegde@linux.ibm.com \
--cc=will@kernel.org \
/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.