Thread (28 messages) 28 messages, 4 authors, 2019-07-17

Re: [PATCH v3 3/5] locking/qspinlock: Introduce CNA into the slow path of qspinlock

From: Peter Zijlstra <peterz@infradead.org>
Date: 2019-07-17 07:45:07
Also in: linux-arch, lkml

On Tue, Jul 16, 2019 at 10:16:29PM -0400, Waiman Long wrote:
 A simple graphic to illustrate those queues will help too, for example
Very much yes!
/*
 * MCS lock holder
 * ===============
 *    mcs_node
 *   +--------+      +----+         +----+
 *   | next   | ---> |next| -> ...  |next| -> NULL  [Main queue]
 *   | locked | -+   +----+         +----+
 *   +--------+  |
 *               |   +----+         +----+
 *               +-> |next| -> ...  |next| -> X     [Secondary queue]
 *    cna_node       +----+         +----+
 *   +--------*                       ^
 *   | tail   | ----------------------+
 *   +--------*   
Almost; IIUC that cna_node is the same as the one from locked, so you
end up with something like:
 *    mcs_node
 *   +--------+      +----+         +----+
 *   | next   | ---> |next| -> ...  |next| -> NULL  [Main queue]
 *   | locked | -+   +----+         +----+
 *   +--------+  |
 *               |   +---------+         +----+
 *               +-> |mcs::next| -> ...  |next| -> NULL     [Secondary queue]
 *                   |cna::tail| -+      +----+
 *                   +---------+  |        ^
 *                                +--------+
 *
 * N.B. locked = 1 if secondary queue is absent.
 */
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help