From nobody Wed Aug 17 16:25:06 2022 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 4M7CzQ5Htvz4Zqd9; Wed, 17 Aug 2022 16:25:06 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4M7CzQ4X1dz3n2d; Wed, 17 Aug 2022 16:25:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660753506; 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=oHQPB+3/GL4UHpNYA91/eHvTO4xI8b+okWVW4ShTi+Q=; b=OELxqsBcqfPKkvpeYhT9kiXk97nNVl17b+FvfEHTTop1KYuuIlNynakIYCEqgcT+0T578p xy5dZNPYGuIOTTd2fVErI7jCKWXsTRNXauXSYCFE+20/U1QIyNhIAO6vGWzJHU6uLI+Xnp L3yG1N5ICVSXFXKVSq+PHlzY0fIiqnNLnOMFmUsgkReP/5HVakgl83cRyegTsL1t1SGm7I D7u92VUps3prKbcUzXBfooAiFDpuKx+ftMlpXrmVhUCPjWGpQ5knnOhc9ImqNrPtpoOVbA GCzkhHyKvcPWVXk3MM+c2hqXrfS4M+/4WmeaEMNUp9dSfCoF4KN7o8F9xL7aOg== 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 4M7CzQ3bGbzwbm; Wed, 17 Aug 2022 16:25:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 27HGP65A097889; Wed, 17 Aug 2022 16:25:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 27HGP6bh097888; Wed, 17 Aug 2022 16:25:06 GMT (envelope-from git) Date: Wed, 17 Aug 2022 16:25:06 GMT Message-Id: <202208171625.27HGP6bh097888@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: 1b89d40fbf77 - main - Revert "vm: use atomic fetchadd in vm_page_sunbusy" 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: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: 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: 1b89d40fbf7788c75a7612b22b1dba1612e45c9a Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660753506; 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=oHQPB+3/GL4UHpNYA91/eHvTO4xI8b+okWVW4ShTi+Q=; b=S38817MUE+sbAJjWvvqu2wlYUQkAqHvsovWAk4XwL0QEuGv5/wZxM3aeGNwUL36g33XPGe WNf5hUHylnqAqCGsem0wZZ8UMn64U2ENf82jX/xn9YKk1FlLPqSsyYcMuqG2gch4LVMzfP bvEuYT8PHMqZ7EbxhH2zLvLg+8KutcllH8Od/wM5sli+Y90cxvav5f5xc43fYJkQObG2tS c9y6NAh2k0vEpmU8i1kzsELMC4TacbsaRkCZYJs8OF2GtLCmaFMYcExmkmOVHyo6TO8c03 ZCXPXstbT/YNpU7oRzJZ2IN0Cuq6IZx0e61RHYZRKB5CVBkP43XRarJRWzrY6Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1660753506; a=rsa-sha256; cv=none; b=o3XfsCOhvqN1K6t/YJSDFq76keNr+/klmIGdhdpgJuloe+PtcH9xqa0Vfl3Z+vt3y2wTzR Y/h9J+s2Gc4Qefz5AYgPrb54h2TkFtlT61b5AYgRZyw8QbGN1DOhII0g7TawHiPLsqxbnW id4hBX39PkS7dHSphY8tSACONwO6pyQHNXUviC92EUg5zrhs6uf2gAsnB1bNukKNL3dth4 RbGmsrdobZ+SswoeZuHa5pEiqRxAjgCKAFciBBCVQlourbhkSqyYVeooXp6o4CCU8G341j vDSBRYbsrJJG2+Pcf+o2r8sDO1xjnKAN1mQPjNsnN5BHsU6Q/VmC7uqXh+KR8Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=1b89d40fbf7788c75a7612b22b1dba1612e45c9a commit 1b89d40fbf7788c75a7612b22b1dba1612e45c9a Author: Mateusz Guzik AuthorDate: 2022-08-17 16:24:14 +0000 Commit: Mateusz Guzik CommitDate: 2022-08-17 16:24:14 +0000 Revert "vm: use atomic fetchadd in vm_page_sunbusy" This reverts commit f6ffed44a8eb5d1ab89a18e60fb056aab2105be7. fetchadd will fail the waiters flag, which can cause other code to wait when it should not with nothing clear it Revert until I sort this out. Reported by: markj --- sys/vm/vm_page.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index defcebb286ae..e7500e9d3e71 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -973,13 +973,27 @@ vm_page_sunbusy(vm_page_t m) { u_int x; - atomic_thread_fence_rel(); - x = atomic_fetchadd_int(&m->busy_lock, -VPB_ONE_SHARER); - KASSERT(x != VPB_FREED, ("page %p is freed", m)); - KASSERT(x != VPB_UNBUSIED && (x & VPB_BIT_SHARED) != 0, - ("page %p not sbusied", m)); - if (x == (VPB_SHARERS_WORD(1) | VPB_BIT_WAITERS)) + vm_page_assert_sbusied(m); + + x = vm_page_busy_fetch(m); + for (;;) { + KASSERT(x != VPB_FREED, + ("vm_page_sunbusy: Unlocking freed page.")); + if (VPB_SHARERS(x) > 1) { + if (atomic_fcmpset_int(&m->busy_lock, &x, + x - VPB_ONE_SHARER)) + break; + continue; + } + KASSERT((x & ~VPB_BIT_WAITERS) == VPB_SHARERS_WORD(1), + ("vm_page_sunbusy: invalid lock state")); + if (!atomic_fcmpset_rel_int(&m->busy_lock, &x, VPB_UNBUSIED)) + continue; + if ((x & VPB_BIT_WAITERS) == 0) + break; wakeup(m); + break; + } } /*