Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp5950688rwr; Tue, 9 May 2023 08:18:04 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7rwiAtUmxDEkUYNJXAQw4Q0eu262A6X1Rez9RrhAEwTqV/Gm2JFK1ATXhPv9O3Ig7kpIcC X-Received: by 2002:a05:6a20:3d27:b0:100:99a:7f71 with SMTP id y39-20020a056a203d2700b00100099a7f71mr12149943pzi.2.1683645483894; Tue, 09 May 2023 08:18:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683645483; cv=none; d=google.com; s=arc-20160816; b=pINr9M7I14h2cDfC/WljNUgb0Eo9VqycoxZsQHZudHQHuIEfmyD/W46itE9X3tQo/5 Sf8d9tdBuc5E+Bg5pjeAmROpHF30g1Kpxj6zKDKLbHcRrYMjxip6vZs9ZCyPRTyUM1s1 E2OjTSfcAsN0pcNWIreILWpAnQr5xSWZx4aBsjufe6MABCW2Ad36a+3eR27Sa3DDMJjF DbSB9g9hqefIiyqTfSNuAd9/YaPiTxsP+st/7xVTNtmhRSlAD6UFt0nvBFYyWOYE6x6b BNPgy7OPvvAlZ1dctHR8TmzqXcaLfcZ8g4Fi4q2Xrj3YDw1Qb8yy7xvbpJJ2y30ICzcD Ur6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=46sFLqQARW3IRka2wIs9+b0QgXDTHZ4c0a8iYuva5as=; b=wePG88AYAVo9Go8vDqH9ueZ+iBa4KIh8YWWnGP4xLPjsu1Fg9hSX98Wnobdw7KfL3h 7+t0wI/3cL8cCK14ZGyx273FH7FwZxbL5741hvjlqQ1BVfA9TFhKFmNkGi9vqVj/EyLq /GY5TLneUY5p7PVuKkkQetyHMoqaBuVIQZJ/q6lbfDx2xC2s1fSwGmj3RaPfxNqc9TOh mXA4gkboBd/vYvo+Nkj+9Xuyv6RR7ALUsMch5vFQREphnujzSarlWsnvp/8H+QFMBnM2 69Uu/Gk0VljaGr43fk0P2mil8MknS4+HOMcdD8gGj6qkgsJraF1cXizquzUkZl+AprSm LefA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="Wh+N/EPo"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q10-20020a656a8a000000b00528de9650b9si1704474pgu.696.2023.05.09.08.17.50; Tue, 09 May 2023 08:18:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="Wh+N/EPo"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236026AbjEIPDK (ORCPT + 99 others); Tue, 9 May 2023 11:03:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236023AbjEIPDJ (ORCPT ); Tue, 9 May 2023 11:03:09 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E630126AF for ; Tue, 9 May 2023 08:03:05 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-50bc070c557so11650076a12.0 for ; Tue, 09 May 2023 08:03:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683644584; x=1686236584; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=46sFLqQARW3IRka2wIs9+b0QgXDTHZ4c0a8iYuva5as=; b=Wh+N/EPo5Q2lusjsLbbBW5M8V1bRio5DAOMldUnmGXDdfE7Va8Kg1eQLtM0moeTEAU Cg/RYaT6oriq8V4i5jKHvZ+Ew2LA1k7dXkxY6GbXL/k36CTmg8n/yPhSeZ1mLGycxe2D 1CIpeF6I+Vs8mPtjJOggrMDzVAPSGieM8lqf0YK4JnPmtwU9S8+XzKJsLLfy94RNlQt5 lBs2RbX8gl7QcyajscKQMcIQPzzqMYdPw4SV3ej5B8tkzuR9pWFu4H6uPswP+kDvrbAx ahGtNqYo3emb5yQi+iJjJEw3UphmQpOn0SRiV3OhFDy6EUXf6oS+KGEnQliwwCM9v6qt n9ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683644584; x=1686236584; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=46sFLqQARW3IRka2wIs9+b0QgXDTHZ4c0a8iYuva5as=; b=Zv3e3iNXWh/CA0d5t6VC9JFPNsu1eAtcX5h0oGFEVGM/+Uhl5I42ieuZcNaVxJT4HL 56599cSXWQ4A+85mDtbXQ89Z3S7yKu1r7M9FSEjEaHDkWBMoklNTKES0HPxhBzmRzTqf B2eZhkV+IJ7LKBuG4Qdq086l4SdufTkcqRjKACelS+WeOq8mFeI4aNcV92RmFfmtartg dlAE6e+QdVMF2PxWouUW8bMCvjZzgfD2/8Ml75lo06Fo2s37i4mMBPfILznKOphCCvNc CU/rtEZ78exRhMF9cD3iO0xdiDU8xlIVP/t4liw1EjUuGbIFVvCAdMQysqFfXNBUzlmD w2mg== X-Gm-Message-State: AC+VfDxlG6Vl6QrI8SYHf3Csp8QF911AdTASG/gebA/mK+JqFxCAB/ds ued9lZY3y8efaCS9SLYx0ErD7tUknCkxTQ== X-Received: by 2002:a17:906:db08:b0:965:fa80:bf1 with SMTP id xj8-20020a170906db0800b00965fa800bf1mr11672958ejb.32.1683644583918; Tue, 09 May 2023 08:03:03 -0700 (PDT) Received: from localhost.localdomain ([46.248.82.114]) by smtp.gmail.com with ESMTPSA id ku11-20020a170907788b00b0094f5179540fsm1401749ejc.83.2023.05.09.08.03.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 May 2023 08:03:03 -0700 (PDT) From: Uros Bizjak To: linux-kernel@vger.kernel.org Cc: Uros Bizjak , Thomas Gleixner Subject: [PATCH] atomics: Use atomic_try_cmpxchg_release in rcuref_put_slowpath() Date: Tue, 9 May 2023 17:02:55 +0200 Message-Id: <20230509150255.3691-1-ubizjak@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use atomic_try_cmpxchg instead of atomic_cmpxchg (*ptr, old, new) == old in rcuref_put_slowpath(). 86 CMPXCHG instruction returns success in ZF flag, so this change saves a compare after cmpxchg. Additionaly, the compiler reorders some code blocks to follow likely/unlikely annotations in the atomic_try_cmpxchg macro, improving the code from 9a: f0 0f b1 0b lock cmpxchg %ecx,(%rbx) 9e: 83 f8 ff cmp $0xffffffff,%eax a1: 74 04 je a7 a3: 31 c0 xor %eax,%eax to 9a: f0 0f b1 0b lock cmpxchg %ecx,(%rbx) 9e: 75 4c jne ec a0: b0 01 mov $0x1,%al No functional change intended. Cc: Thomas Gleixner Signed-off-by: Uros Bizjak --- lib/rcuref.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rcuref.c b/lib/rcuref.c index 5ec00a4a64d1..97f300eca927 100644 --- a/lib/rcuref.c +++ b/lib/rcuref.c @@ -248,7 +248,7 @@ bool rcuref_put_slowpath(rcuref_t *ref) * require a retry. If this fails the caller is not * allowed to deconstruct the object. */ - if (atomic_cmpxchg_release(&ref->refcnt, RCUREF_NOREF, RCUREF_DEAD) != RCUREF_NOREF) + if (!atomic_try_cmpxchg_release(&ref->refcnt, &cnt, RCUREF_DEAD)) return false; /* -- 2.40.1