From: Ankur Arora <ankur.a.arora@oracle.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Ankur Arora <ankur.a.arora@oracle.com>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>,
linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, bpf@vger.kernel.org,
arnd@arndb.de, will@kernel.org, peterz@infradead.org,
akpm@linux-foundation.org, mark.rutland@arm.com,
harisokn@amazon.com, cl@gentwo.org, ast@kernel.org,
zhenglifeng1@huawei.com, xueshuai@linux.alibaba.com,
joao.m.martins@oracle.com, boris.ostrovsky@oracle.com,
konrad.wilk@oracle.com
Subject: Re: [PATCH v5 5/5] rqspinlock: Use smp_cond_load_acquire_timeout()
Date: Fri, 12 Sep 2025 11:06:45 -0700 [thread overview]
Message-ID: <875xdnk0ju.fsf@oracle.com> (raw)
In-Reply-To: <aMPyiKuzGh4L4gD8@arm.com>
Catalin Marinas <catalin.marinas@arm.com> writes:
> On Thu, Sep 11, 2025 at 02:58:22PM -0700, Ankur Arora wrote:
>>
>> Kumar Kartikeya Dwivedi <memxor@gmail.com> writes:
>>
>> > On Thu, 11 Sept 2025 at 16:32, Catalin Marinas <catalin.marinas@arm.com> wrote:
>> >>
>> >> On Wed, Sep 10, 2025 at 08:46:55PM -0700, Ankur Arora wrote:
>> >> > Switch out the conditional load inerfaces used by rqspinlock
>> >> > to smp_cond_read_acquire_timeout().
>> >> > This interface handles the timeout check explicitly and does any
>> >> > necessary amortization, so use check_timeout() directly.
>> >>
>> >> It's worth mentioning that the default smp_cond_load_acquire_timeout()
>> >> implementation (without hardware support) only spins 200 times instead
>> >> of 16K times in the rqspinlock code. That's probably fine but it would
>> >> be good to have confirmation from Kumar or Alexei.
>> >>
>> >
>> > This looks good, but I would still redefine the spin count from 200 to
>> > 16k for rqspinlock.c, especially because we need to keep
>> > RES_CHECK_TIMEOUT around which still uses 16k spins to amortize
>> > check_timeout.
>>
>> By my count that amounts to ~100us per check_timeout() on x86
>> systems I've tested with cpu_relax(). Which seems quite reasonable.
>>
>> 16k also seems safer on CPUs where cpu_relax() is basically a NOP.
>
> Does this spin count work for poll_idle()? I don't remember where the
> 200 value came from.
Just reusing the value of POLL_IDLE_RELAX_COUNT which is is defined as
200.
For the poll_idle() case I don't think the value of 200 makes sense
for all architectures, so they'll need to redefine it (before defining
ARCH_HAS_OPTIMIZED_POLL which gates poll_idle().)
--
ankur
next prev parent reply other threads:[~2025-09-12 18:07 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-11 3:46 [PATCH v5 0/5] barrier: Add smp_cond_load_*_timeout() Ankur Arora
2025-09-11 3:46 ` [PATCH v5 1/5] asm-generic: barrier: Add smp_cond_load_relaxed_timeout() Ankur Arora
2025-09-18 19:42 ` Will Deacon
2025-09-19 23:41 ` Ankur Arora
2025-09-22 10:47 ` Will Deacon
2025-09-11 3:46 ` [PATCH v5 2/5] arm64: " Ankur Arora
2025-09-18 20:05 ` Will Deacon
2025-09-19 16:18 ` Catalin Marinas
2025-09-19 22:39 ` Ankur Arora
2025-09-11 3:46 ` [PATCH v5 3/5] arm64: rqspinlock: Remove private copy of smp_cond_load_acquire_timewait Ankur Arora
2025-09-11 3:46 ` [PATCH v5 4/5] asm-generic: barrier: Add smp_cond_load_acquire_timeout() Ankur Arora
2025-09-11 3:46 ` [PATCH v5 5/5] rqspinlock: Use smp_cond_load_acquire_timeout() Ankur Arora
2025-09-11 14:32 ` Catalin Marinas
2025-09-11 18:54 ` Kumar Kartikeya Dwivedi
2025-09-11 21:58 ` Ankur Arora
2025-09-12 10:14 ` Catalin Marinas
2025-09-12 18:06 ` Ankur Arora [this message]
2025-09-11 18:56 ` Kumar Kartikeya Dwivedi
2025-09-11 21:57 ` Ankur Arora
2025-09-11 14:34 ` [PATCH v5 0/5] barrier: Add smp_cond_load_*_timeout() Catalin Marinas
2025-09-11 21:57 ` Ankur Arora
2025-09-15 11:12 ` Catalin Marinas
2025-09-16 5:29 ` Ankur Arora
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=875xdnk0ju.fsf@oracle.com \
--to=ankur.a.arora@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=ast@kernel.org \
--cc=boris.ostrovsky@oracle.com \
--cc=bpf@vger.kernel.org \
--cc=catalin.marinas@arm.com \
--cc=cl@gentwo.org \
--cc=harisokn@amazon.com \
--cc=joao.m.martins@oracle.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=memxor@gmail.com \
--cc=peterz@infradead.org \
--cc=will@kernel.org \
--cc=xueshuai@linux.alibaba.com \
--cc=zhenglifeng1@huawei.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.