[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 05/11] qspinlock: Optimize for smaller NR_CPUS



Il 07/07/2014 16:35, Peter Zijlstra ha scritto:
On Wed, Jun 18, 2014 at 01:39:52PM +0200, Paolo Bonzini wrote:
Il 15/06/2014 14:47, Peter Zijlstra ha scritto:

-       for (;;) {
-               new = (val & ~_Q_PENDING_MASK) | _Q_LOCKED_VAL;
-
-               old = atomic_cmpxchg(&lock->val, val, new);
-               if (old == val)
-                       break;
-
-               val = old;
-       }
+       clear_pending_set_locked(lock, val);
        return;


Might as well add clear_pending_set_locked already in patch 3.

Patch 4, if anywhere.


This code is added in patch 3:

+       /*
+        * take ownership and clear the pending bit.
+        *
+        * *,1,0 -> *,0,1
+        */
+       for (;;) {
+               new = (val & ~_Q_PENDING_MASK) | _Q_LOCKED_VAL;
+
+               old = atomic_cmpxchg(&lock->val, val, new);
+               if (old == val)
+                       break;
+
+               val = old;
+       }
+       return;

Unlike the change in patch 4, clear_pending_set_locked doesn't change how qspinlock moves from a state to the next.

Paolo

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.