Re: [PATCH v4 0/3] qspinlock: Introducing a 4-byte queue spinlock

From: Raghavendra K T
Date: Wed Feb 19 2014 - 02:03:46 EST


On 02/19/2014 06:12 AM, Waiman Long wrote:
On 02/18/2014 04:28 PM, Peter Zijlstra wrote:
On Tue, Feb 18, 2014 at 02:30:12PM -0500, Waiman Long wrote:
I will start looking at how to make it work with paravirt. Hopefully, it
won't take too long.
The cheap way out is to simply switch to the test-and-set spinlock on
whatever X86_FEATURE_ indicates a guest I suppose.

I don't think there is X86_FEATURE flag that indicates running in a
guest. In fact, a guest should never find out if it is running virtualized.

After reading the current PV ticketlock implementation, I have a rough
idea of what I need to do to implement PV support in qspinlock. A large
portion of PV ticketlock code is find out the CPU number of the next one
to get the lock. The current qspinlock implementation has already
included CPU number of the previous member in the queue and it should be
pretty easy to store CPU number of the next one in the queue node
structure. These CPU numbers can then be supplied to the kick_cpu()
function to schedule in the require the CPU to make sure that progress
can be made.

That is correct.
Strict serialization of the lock is usually a headache for virtualized
guest (especially when overcommitted). I am eager to test the next
version.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/