Messages in this thread | | | Date | Wed, 19 Feb 2014 12:39:29 +0530 | From | Raghavendra K T <> | Subject | Re: [PATCH v4 0/3] qspinlock: Introducing a 4-byte queue spinlock |
| |
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.
| |