From nobody Sun Oct 5 15:54:07 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cfn5D3ccCz6BCYD; Sun, 05 Oct 2025 15:54:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cfn5C6gphz3Frx; Sun, 05 Oct 2025 15:54:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759679647; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ha9scYjqnl6AtPv7P+oGnt4VnNOFYQ/m0gk3Jx3FSS0=; b=SJgLEctokXezdQmlQE1UqDQmouvYYV6MmxEcmexnmCIKXFbs+iVxWPOR8E2OHifcJ4KuPg vnmJHx0sauhJUDNsYMDliCjVqS8NLxw6x2yY/eJp70ItHc4fnnpqDxUlG1RfilWGLxsx2V 1dpyrz5zrW9wWjlequN4weDmfPLBRF0AfWFZeKNa+qB2bkI61bhYzhpB3igr/6+88MrSXK iaMJVTIzx1BTTOigFF/KiWW3+ta5q7bFjqiZRb0pG2g1duScKX2KZNpChS0nIdHfQ57aE0 wfXl+mJAAYy5Y9+RVhTrHKnv0/WrTs5HaSTbtRBi/mnv5HRbOCFeuOeBvGCUzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759679647; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ha9scYjqnl6AtPv7P+oGnt4VnNOFYQ/m0gk3Jx3FSS0=; b=wS7Djkrv9duxB3/hp3rLX/a1u7LTWQB3Ge9moanT6CWqbDp8eUxhVWHzdCtbci2q/Im+Dm eFKpq/nBdwDIAPouQANi5DgYNG9jkaKMjHasfvHryaqgNVwXdB6GlYZsqDkUR5Y3iU5ra+ +55MeCKCEjBYiAtOAKA9fgHcAqQQ6bqLbAia7W9rvR0XvYpT6KyeXitjdliSkA+cPhM2Y/ CTiYdqzskSBUPlzBbc5KHLDoYxERHUpeb89+fGJEDMJup6b1OdNinAkUarapXWaGkXrb8Q nh8dhj/qDj0a49XOox3jslPsBMUInMOHpJghM9c8JNgdGwEYLWLD1NYb5ys+zg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1759679648; a=rsa-sha256; cv=none; b=aRwSSokZmU6Fo3TsxWgPDA12HIImgmmQtLma6KD/+nziDUQ6zYUmQaBOK+0I33/ktmbTDZ 8k1z8rAtmxDWWOUf5wGE8ulVNlWlWl0+Rk+DgYRzZWz0g5N2WKo73UXC9ACypLzFQa6dsF TWCe8fmICTSnnvALBBU92Kg5FGC/jHYMUCXKBB4VKBFw5dKTG+TkMqtyCRwQoOqOty9eWN 9G8QjBuIqlRL5aD5FobSNUDZ1/frkYRfNmF/6dL4I0RYRuJIpUI4JpAV3P3CFQ7j/27GOx Y5FXm0Pn5Ij2PPYt74K64Q9XOJOFy6xUbhdcVw7xzEotcgFnGavk2vh4Knf2/A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cfn5C6CbJz3pk; Sun, 05 Oct 2025 15:54:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 595Fs7vS076764; Sun, 5 Oct 2025 15:54:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 595Fs7va076761; Sun, 5 Oct 2025 15:54:07 GMT (envelope-from git) Date: Sun, 5 Oct 2025 15:54:07 GMT Message-Id: <202510051554.595Fs7va076761@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: ccb600906f15 - main - mtx: retire _mtx_release_lock_quick List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ccb600906f152df310794f146eac54372e6b2665 Auto-Submitted: auto-generated The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=ccb600906f152df310794f146eac54372e6b2665 commit ccb600906f152df310794f146eac54372e6b2665 Author: Mateusz Guzik AuthorDate: 2025-10-05 15:38:06 +0000 Commit: Mateusz Guzik CommitDate: 2025-10-05 15:39:04 +0000 mtx: retire _mtx_release_lock_quick The macro is misleading and of questionable value to begin with. For starters, it is used for both spinlocks and regular mutexes (the latter only the in the slow path), which have fundamentally different requirements on unlock -- spinlocks are guaranteed to not have blocked waiters and can blindly do a store. The commentary above the it is also head-scratching: > Release mtx_lock quickly, assuming we own it. You can't *just* release a sleepable mutex "quickly". The only legal use right now is when the turnstile lock is held. Note that unlock of a sleepable mutex without using RMW atomics is very much possible and may show up soon (tm). Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/kern/kern_mutex.c | 6 +++--- sys/sys/mutex.h | 6 +----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c index 8b5908f5219a..b7316ea5f387 100644 --- a/sys/kern/kern_mutex.c +++ b/sys/kern/kern_mutex.c @@ -869,7 +869,7 @@ _thread_lock(struct thread *td) WITNESS_LOCK(&m->lock_object, LOP_EXCLUSIVE, file, line); return; } - _mtx_release_lock_quick(m); + atomic_store_rel_ptr(&m->mtx_lock, MTX_UNOWNED); slowpath_unlocked: spinlock_exit(); slowpath_noirq: @@ -959,7 +959,7 @@ retry: } if (m == td->td_lock) break; - _mtx_release_lock_quick(m); + atomic_store_rel_ptr(&m->mtx_lock, MTX_UNOWNED); } LOCK_LOG_LOCK("LOCK", &m->lock_object, opts, m->mtx_recurse, file, line); @@ -1071,7 +1071,7 @@ __mtx_unlock_sleep(volatile uintptr_t *c, uintptr_t v) * can be removed from the hash list if it is empty. */ turnstile_chain_lock(&m->lock_object); - _mtx_release_lock_quick(m); + atomic_store_rel_ptr(&m->mtx_lock, MTX_UNOWNED); ts = turnstile_lookup(&m->lock_object); MPASS(ts != NULL); if (LOCK_LOG_TEST(&m->lock_object, opts)) diff --git a/sys/sys/mutex.h b/sys/sys/mutex.h index b534a74626bc..83300d4eb593 100644 --- a/sys/sys/mutex.h +++ b/sys/sys/mutex.h @@ -221,10 +221,6 @@ void _thread_lock(struct thread *); #define _mtx_release_lock(mp, tid) \ atomic_cmpset_rel_ptr(&(mp)->mtx_lock, (tid), MTX_UNOWNED) -/* Release mtx_lock quickly, assuming we own it. */ -#define _mtx_release_lock_quick(mp) \ - atomic_store_rel_ptr(&(mp)->mtx_lock, MTX_UNOWNED) - #define _mtx_release_lock_fetch(mp, vp) \ atomic_fcmpset_rel_ptr(&(mp)->mtx_lock, (vp), MTX_UNOWNED) @@ -332,7 +328,7 @@ void _thread_lock(struct thread *); (mp)->mtx_recurse--; \ else { \ LOCKSTAT_PROFILE_RELEASE_SPIN_LOCK(spin__release, mp); \ - _mtx_release_lock_quick((mp)); \ + atomic_store_rel_ptr(&(mp)->mtx_lock, MTX_UNOWNED); \ } \ spinlock_exit(); \ })