Thread (23 messages) flat view 23 messages, 6 authors, 2014-02-10

Re: [PATCH] Convert powerpc simple spinlocks into ticket locks

From: Scott Wood <hidden>
Date: 2014-02-06 20:20:01
Also in: lkml

On Thu, 2014-02-06 at 18:37 +0100, Torsten Duwe wrote:
On Thu, Feb 06, 2014 at 05:38:37PM +0100, Peter Zijlstra wrote:
quoted
On Thu, Feb 06, 2014 at 11:37:37AM +0100, Torsten Duwe wrote:
quoted
x86 has them, MIPS has them, ARM has them, even ia64 has them:
ticket locks. They reduce memory bus and cache pressure especially
for contended spinlocks, increasing performance.

This patch is a port of the x86 spin locks, mostly written in C,
to the powerpc, introducing inline asm where needed. The pSeries
directed yield for vCPUs is taken care of by an additional "holder"
field in the lock.
A few questions; what's with the ppc64 holder thing? Not having a 32bit
spinlock_t is sad.
I must admit that I haven't tested the patch on non-pseries ppc64 nor on
ppc32. Only ppc64 has the ldarx and I tried to atomically replace the 
holder along with the locks. That might prove unneccessary.
Why is the functionality of holder only required on 64-bit?  We have too
many 32/64 differences as is.  Perhaps on 32-bit a lower max number of
CPUs could be assumed, to make it fit in one word.
quoted
Can you pair lwarx with sthcx ? I couldn't immediately find the answer
in the PowerISA doc. If so I think you can do better by being able to
atomically load both tickets but only storing the head without affecting
the tail.
V2.06b, Book II, Chapter 3, "sthcx" says:
| If a reservation exists and the length associated [...] is not 2 bytes,
| it is undefined whether (RS)_48:63 are stored [...]

That doesn't make me feel comfortable :(
Plus, sthcx doesn't exist on all PPC chips.

-Scott
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help