From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7FAD0345CA1 for ; Fri, 6 Mar 2026 23:04:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772838253; cv=none; b=HKT5jQCjvDVyljMjCXzgLzwov4fS8IW+fDc7tanD3ePWtWWqNsyAmWO5/oscBGjMzdhC/DPxc67jZEPAioV7NIBNqSf9/BoIXmWkpzjJDGfi3MOkyIToYwsgW08mIVSBC8grJ4osvtzdOaaBmT0pfSMyMWXtmvhb03Wg2EcrDOE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772838253; c=relaxed/simple; bh=OFE+0bK9dDnW9a/yMhl7rcWqaZuszoGHO+Jgot+P/2Y=; h=Date:From:To:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mMAyzZjFZHixrzTAbR+UV9vkopKBirg48FvlGFlcr0U0SZVmuylzLQXmDghzsD/fZ3omKz5yY9n8o62pxnqhkqPxXrXGV6l+qLD6OP6jtO4lljU7eD6PrnZ5Y6K8qn6+v9gnhC0okh4WhxtF2aSd5+Ep2Qy9cLGYKnf0D9Bxe+A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZkfTaHWA; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZkfTaHWA" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4836d4c26d3so77433545e9.2 for ; Fri, 06 Mar 2026 15:04:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772838251; x=1773443051; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:to:from:date:from:to:cc:subject:date:message-id :reply-to; bh=ug4f7kwHmqGUvOPPLo8S94LnY6nhJh8sqszqcIUCXB4=; b=ZkfTaHWAlSRtlaKtHziNGf7zrUW4KJkW72L5PBDaxC2DOZLjD/WYK1jI6kc7QgIzRz G+atv4fuqVbxr4pXLH00Xn9eRfmg+H+Z4CwGyDn0G32zgBVmrKWKTWHiBK5u+mNDHAHR GadJG9WQH5jYC9V28qyRI+HlePiepj6rvueH2V5rUtrXe76j3FL1e8DiML3Z68Fr2KX6 a10cHfju8QJdbZv4rP/785M2SJhEDDgnNN+1c1gJdgAKTq6nLfF3yvFvKQ5UqLcAwCqX icCk+Nmx4qPuY4HeUh7IeZRRkvCjuEiFCPnC0iH85xN9Ta7wad3Ce66h3Hj3lCMsAakw 3b2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772838251; x=1773443051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:to:from:date:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ug4f7kwHmqGUvOPPLo8S94LnY6nhJh8sqszqcIUCXB4=; b=X+Qc9APD6kJW4Cf4dotOUEN3uffTWW8WIRa1P4OPblD0UPkCD5hwo4fm6fSt+bMyjq szfqqbQN9K+R/Myg5WCisj1QWkpC99rAaZgYQFosxCK3AL20Dp9xzumJhoWXNCZoJcAg NhVWalO7tZxTA6WQMCVOOF3WymZHoDxVvaYUeeRaWSpHLW4bFY9tVGnc42YfRUKU3lfV 1HpfYlZcK/nC+9rSsTqk2fuHwxYS1KVGSzZjcgf4pJz9yef4WK1v2soQ9AIiNJbc1x/L jysArI3gjxRrcQxjnglcqUJ5qROH+rOH1CKOT33B39P9aYHGYWfi1s/pblRqRoSh2Ho0 BrqA== X-Forwarded-Encrypted: i=1; AJvYcCXslN8QE0Fno5YQGG9P4hiQxd6tRIVUfDtVDSyxAcBb++xqgj1wwoY0v/vSMryTJUnEr7TCSVGKK6vaZkk=@vger.kernel.org X-Gm-Message-State: AOJu0YwK6gnDMOrCP6NR0eEMNsi6eN6Iwe/9x/Iy+wVJZ2Kvv/Yg9/fh NK89EchVjDiLBGIeyaHF67wMf6KHELHFvOyabwyX2deTfWm7MKqzv+Ak X-Gm-Gg: ATEYQzxpFr1JNDdl/TyxsoqMjtWXysXEmlLFlCreA3LJaoUuxbxaAJYNFu1QJS51Le8 9jV9jj6Pu1P6OF0VSleu86kYBaKabVVIJ5KpQzb+UQmkIPh60RU+E4Su6JL8w/mBfLFVhHxrR8+ Rm1cvsx4MWwFKCPEkNR2oWHmVf3CN7kpVJ5Ed+iiTlZGmkij1E9Ex4V0m/+eFwZBO7JRHLFqSVH Y9yalCVugYiyxYrUpJs5VFEesd18sKPfC5seVul0cmZTIGopjK9l4T1ufK9nYAFbDgjmsFjTHIy I9nAO4JvDszHwp0wRVtzBHyvCtx5ct7e86tWeq5pqMYpsVMhZyoDQA0RuzGsJwuahVIA6C9MvBZ V+FH2sFQfWs+xj+vRya25H8lG3+qmhuf76m13/qMyDyBNyoH8dt8kwNUp6lUzTcF/nXSTQFFIge 3Fqa/mRcQizqPvUFg2RYMF4G2Zpsu2ziao+2eZW8/v6UAMCqmscvIKhk+W0YrAIMU3 X-Received: by 2002:a05:600c:444f:b0:480:4b59:932e with SMTP id 5b1f17b1804b1-4852692498emr57076325e9.11.1772838250629; Fri, 06 Mar 2026 15:04:10 -0800 (PST) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4851fb277e3sm131505085e9.10.2026.03.06.15.04.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 15:04:10 -0800 (PST) Date: Fri, 6 Mar 2026 23:04:09 +0000 From: David Laight To: Waiman Long , Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , linux-kernel@vger.kernel.org, Linus Torvalds , Yafang Shao , Steven Rostedt Subject: Re: [PATCH v3 next 5/5] Avoid writing to node->next in the osq_lock() fast path Message-ID: <20260306230409.7d31d464@pumpkin> In-Reply-To: <20260306225150.93178-6-david.laight.linux@gmail.com> References: <20260306225150.93178-1-david.laight.linux@gmail.com> <20260306225150.93178-6-david.laight.linux@gmail.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 6 Mar 2026 22:51:50 +0000 david.laight.linux@gmail.com wrote: > From: David Laight > > When osq_lock() returns false or osq_unlock() returns static > analysis shows that node->next should always be NULL. > This means that it isn't necessary to explicitly set it to NULL > prior to atomic_xchg(&lock->tail, curr) on entry to osq_lock(). > > Defer determining the address of the CPU's 'node' until after the > atomic_exchange() so that it isn't done in the uncontented path. > > Signed-off-by: David Laight > --- > kernel/locking/osq_lock.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/kernel/locking/osq_lock.c b/kernel/locking/osq_lock.c > index 0619691e2756..3f0cfdf1cd0f 100644 > --- a/kernel/locking/osq_lock.c > +++ b/kernel/locking/osq_lock.c > @@ -92,13 +92,10 @@ osq_wait_next(struct optimistic_spin_queue *lock, > > bool osq_lock(struct optimistic_spin_queue *lock) > { > - struct optimistic_spin_node *node = this_cpu_ptr(&osq_node); > - struct optimistic_spin_node *prev, *next; > + struct optimistic_spin_node *node, *prev, *next; > unsigned int curr = encode_cpu(smp_processor_id()); > unsigned int prev_cpu; > > - node->next = NULL; > - > /* > * We need both ACQUIRE (pairs with corresponding RELEASE in > * unlock() uncontended, or fastpath) and RELEASE (to publish > @@ -109,6 +106,7 @@ bool osq_lock(struct optimistic_spin_queue *lock) > if (prev_cpu == OSQ_UNLOCKED_VAL) > return true; > > + node = this_cpu_ptr(&osq_node); > WRITE_ONCE(node->prev_cpu, prev_cpu); > prev = decode_cpu(prev_cpu); > node->locked = 0;