Re: [PATCH 06/13] locking/qspinlock: merge qspinlock_paravirt.h into qspinlock.c

From: Nicholas Piggin
Date: Mon Jul 11 2022 - 20:46:34 EST

Excerpts from Peter Zijlstra's message of July 6, 2022 3:36 am:
> On Tue, Jul 05, 2022 at 07:20:37PM +0200, Peter Zijlstra wrote:
>> On Tue, Jul 05, 2022 at 12:38:13AM +1000, Nicholas Piggin wrote:
>> > There isn't much reason to keep these separate.
>> The reason was so that other paravirt implementations could be added.
>> The CNA thing was also implemented this way...
> Also, (TIL) s390 seems to have a copy of all this:
> b96f7d881ad9 ("s390/spinlock: introduce spinlock wait queueing")

Right. powerpc is going to add another one. I've also been struggling
to make PV qspinlock work well for us and the PV hooks didn't quite
help. This series is just me dumping what I had done while working
with the code until now, feel free to take or leave it.

The PV things could easily be moved out again or conditionally
compiled when another implementation in tree comes up.

> it might be nice if it were possible to fold that back into this with a
> different paravirt implementation; but I've not looked at it in any
> great detail yet.

I would like to fold powerpc some time (or at least merge it with
s390 which it is possibly more similar with) but at the moment kind
of need prove it even works on our systems and solves issues before
bothering other archs with it. It's not all that complicated though
so not too concerned about carrying it in arch.