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
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