From: Peter Zijlstra <peterz@infradead.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Russell King <linux@armlinux.org.uk>,
Sebastian Andrzej Siewior <sebastian@breakpoint.cc>,
Ingo Molnar <mingo@redhat.com>, Waiman Long <longman@redhat.com>,
Will Deacon <will@kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [RFC PATCH 0/3] Queued spinlocks/RW-locks for ARM
Date: Wed, 9 Oct 2019 12:56:50 +0200 [thread overview]
Message-ID: <20191009105650.GM2328@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <CAK8P3a0W2+oayv8D=DBqDaeR+dp2QsjhigKevT_D6NLtGPMWxw@mail.gmail.com>
On Wed, Oct 09, 2019 at 12:31:24PM +0200, Arnd Bergmann wrote:
> On Wed, Oct 9, 2019 at 11:31 AM Peter Zijlstra <peterz@infradead.org> wrote:
> > On Wed, Oct 09, 2019 at 10:57:25AM +0200, Arnd Bergmann wrote:
> > > On Wed, Oct 9, 2019 at 10:46 AM Peter Zijlstra <peterz@infradead.org> wrote:
> > > > Why is this not in __xchg() as a variant for case 2 ?
> > >
> > > ldrexh/strexh are instructions that are only available on SMP-capable
> > > architecture revisions (ARMv6K or higher). When building a kernel
> > > that runs both on pre-K ARMv6 uniprocessor systems and on later
> > > SMP systems, __xchg() can only do 32-bit ldrex/strex.
> >
> > You can do u16 xchg using a u32 ll/sc, see openrisc's xchg_small().
>
> Ah, right. That would be much nicer than my smp_xchg16_relaxed()
> hack to get the corner case working, as it avoids the ugly special
> case in qspinlock.h.
>
> Would this still have comparable performance characteristics?
I suppose so..
> I assume the 16-bit xchg_relaxed() in qspinlock.c was meant as
> an optimization for x86 and other cmpxchg based architectures but
> doesn't actually help on ll/sc based architectures that get the
> reservation on the whole cache line anyway?
It does actually help here too, because it allows other operations to be
regular load/stores.
Look at the #if _Q_PENDING_BITS==8 in qspinlock.c, as opposed to the
#else where they're all atomic_*().
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-10-09 10:57 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-07 21:44 [RFC PATCH 0/3] Queued spinlocks/RW-locks for ARM Sebastian Andrzej Siewior
2019-10-07 21:44 ` [PATCH 1/3] ARM: Use qrwlock implementation Sebastian Andrzej Siewior
2019-10-07 21:44 ` [PATCH 2/3] ARM: Use qspinlock implementation Sebastian Andrzej Siewior
2019-10-07 21:44 ` [PATCH 3/3] ARM: Inline locking functions for !PREEMPTION Sebastian Andrzej Siewior
2019-10-08 11:42 ` [RFC PATCH 0/3] Queued spinlocks/RW-locks for ARM Arnd Bergmann
2019-10-08 13:36 ` Waiman Long
2019-10-08 14:32 ` Arnd Bergmann
2019-10-08 19:47 ` Sebastian Andrzej Siewior
2019-10-08 21:47 ` Arnd Bergmann
2019-10-08 22:02 ` Sebastian Andrzej Siewior
2019-10-09 8:15 ` Arnd Bergmann
2019-10-09 8:46 ` Peter Zijlstra
2019-10-09 8:57 ` Arnd Bergmann
2019-10-09 9:31 ` Peter Zijlstra
2019-10-09 10:31 ` Arnd Bergmann
2019-10-09 10:56 ` Peter Zijlstra [this message]
2019-10-09 12:00 ` Arnd Bergmann
2019-10-09 12:06 ` Peter Zijlstra
2019-10-09 12:52 ` Will Deacon
2019-10-09 13:50 ` Arnd Bergmann
2019-10-09 21:42 ` Sebastian Andrzej Siewior
2019-10-08 19:32 ` Sebastian Andrzej Siewior
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=20191009105650.GM2328@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=longman@redhat.com \
--cc=mingo@redhat.com \
--cc=sebastian@breakpoint.cc \
--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.