Re: [PATCH v7 3/5] locking/qspinlock: Introduce CNA into the slow path of qspinlock
From: Will Deacon <will@kernel.org>
Date: 2020-01-22 08:58:26
Also in:
linux-arch, lkml
On Tue, Jan 21, 2020 at 09:29:19PM +0100, Peter Zijlstra wrote:
quoted hunk ↗ jump to hunk
various notes and changes in the below. --- Index: linux-2.6/kernel/locking/qspinlock.c ===================================================================--- linux-2.6.orig/kernel/locking/qspinlock.c +++ linux-2.6/kernel/locking/qspinlock.c@@ -598,10 +598,10 @@ EXPORT_SYMBOL(queued_spin_lock_slowpath) #define _GEN_CNA_LOCK_SLOWPATH #undef pv_wait_head_or_lock -#define pv_wait_head_or_lock cna_pre_scan +#define pv_wait_head_or_lock cna_wait_head_or_lock #undef try_clear_tail -#define try_clear_tail cna_try_change_tail +#define try_clear_tail cna_try_clear_tail #undef mcs_pass_lock #define mcs_pass_lock cna_pass_lockIndex: linux-2.6/kernel/locking/qspinlock_cna.h ===================================================================--- linux-2.6.orig/kernel/locking/qspinlock_cna.h +++ linux-2.6/kernel/locking/qspinlock_cna.h@@ -8,37 +8,37 @@ /* * Implement a NUMA-aware version of MCS (aka CNA, or compact NUMA-aware lock). * - * In CNA, spinning threads are organized in two queues, a main queue for + * In CNA, spinning threads are organized in two queues, a primary queue for * threads running on the same NUMA node as the current lock holder, and a - * secondary queue for threads running on other nodes. Schematically, it - * looks like this: + * secondary queue for threads running on other nodes. Schematically, it looks + * like this: * * cna_node - * +----------+ +--------+ +--------+ - * |mcs:next | -> |mcs:next| -> ... |mcs:next| -> NULL [Main queue] - * |mcs:locked| -+ +--------+ +--------+ + * +----------+ +--------+ +--------+ + * |mcs:next | --> |mcs:next| --> ... |mcs:next| --> NULL [Primary queue] + * |mcs:locked| -. +--------+ +--------+ * +----------+ | - * +----------------------+ - * \/ + * `----------------------. + * v * +--------+ +--------+ - * |mcs:next| -> ... |mcs:next| [Secondary queue] + * |mcs:next| --> ... |mcs:next| [Secondary queue] * +--------+ +--------+ * ^ | - * +--------------------+ + * `--------------------' * - * N.B. locked = 1 if secondary queue is absent. Othewrise, it contains the + * N.B. locked := 1 if secondary queue is absent. Othewrise, it contains the
If we're redoing the comment, please can you s/Othewrise/Otherwise/ at the same time? It catches me every time I read it! Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel