Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp7143215rwr; Wed, 10 May 2023 04:39:07 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7FWF6u8gsjSxNk3qBRfEdx8XH6NK0wDRLxVOJ7e5FzLjA2wfMrIhTUh5xomZSlj6a+S0sv X-Received: by 2002:a05:6a20:918a:b0:f2:9918:eb73 with SMTP id v10-20020a056a20918a00b000f29918eb73mr22839613pzd.46.1683718746914; Wed, 10 May 2023 04:39:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683718746; cv=none; d=google.com; s=arc-20160816; b=rXu3D/Qkxs/NeQ4Saqr2vD1o2M37K2LBdn5eINLiBntYKW1wKyt3qqgJlFa0vxAdL6 +Evf8UGViRqIYIelco7/YYYI9tnJZ2DJaNvR/X++hpl4++ZGhLQjY7SA8c37pVxsETQa 3lpkP14xRVd++ZGb8PGegdlPBFA6F9imckUrNyGv0hicbUS4LiilQbDltD7ok1cxP76N r+fFQSe9WDc1IDvXBe3VNceI7+PryJ7ijAHuh7KEMejGuce5Z73VIQU74x7Z0SvOwPns Yre+u+zkX7iu4/d93hz0C64SXpwwCGSIV5n2W0HTO1OyU1h1Wy8ti61SRpEoCuaWIG2F rGbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:accept-language:in-reply-to:references:message-id:date :thread-index:thread-topic:subject:cc:to:from; bh=UtIlSoEg2uCr0XZCn/PHcw5IlprvbMaQXnypfcUDzEA=; b=FUtZhmn63jd56y50mF9Qo5wOI0KibcGAQUF5kZBnzgmlSWmEYMx0rjYzulkG+qFMmE C7SvylIMrMKuTto+8xNYw6KsjMdFlpgMinEHwxAdxh3ZyCPZHUflR0AtfJiBK0QmtSyI SbUZyBaZCo2R8m7mU0kEg2J/ZSYaM0hAUE8uJ7zlJ61VQtZf4vVSB7a4YoqbfK3O3LSD jhKWDpNnb7fnwKZwZDbJl7Bs5soznxYofHFbMgXMCCa0uWfy2O9jSPZO72PuivjNRdX6 mog53ivi4kieKi1G2DLeNGrJ1876mQ4PfN2fSIaI0GkAu0NsiT0JS9d9tP6Pop2uMBVK bU9A== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g126-20020a636b84000000b0050ac7d1b32asi3647661pgc.603.2023.05.10.04.38.54; Wed, 10 May 2023 04:39:06 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236953AbjEJLgO convert rfc822-to-8bit (ORCPT + 99 others); Wed, 10 May 2023 07:36:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56886 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236966AbjEJLgG (ORCPT ); Wed, 10 May 2023 07:36:06 -0400 Received: from eu-smtp-delivery-151.mimecast.com (eu-smtp-delivery-151.mimecast.com [185.58.86.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B99061B0 for ; Wed, 10 May 2023 04:36:03 -0700 (PDT) Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by relay.mimecast.com with ESMTP with both STARTTLS and AUTH (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id uk-mta-323-7MEPhWXaOseOIC1jJ3PU8w-1; Wed, 10 May 2023 12:36:00 +0100 X-MC-Unique: 7MEPhWXaOseOIC1jJ3PU8w-1 Received: from AcuMS.Aculab.com (10.202.163.4) by AcuMS.aculab.com (10.202.163.4) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Wed, 10 May 2023 12:35:59 +0100 Received: from AcuMS.Aculab.com ([::1]) by AcuMS.aculab.com ([::1]) with mapi id 15.00.1497.048; Wed, 10 May 2023 12:35:59 +0100 From: David Laight To: 'Uros Bizjak' , "linux-kernel@vger.kernel.org" CC: Thomas Gleixner Subject: RE: [PATCH] atomics: Use atomic_try_cmpxchg_release in rcuref_put_slowpath() Thread-Topic: [PATCH] atomics: Use atomic_try_cmpxchg_release in rcuref_put_slowpath() Thread-Index: AQHZgodhH2M1prck1UuVC7CPAwIZ1q9TYArw Date: Wed, 10 May 2023 11:35:59 +0000 Message-ID: <655cab1a213440f682eddc9cc1ad2d44@AcuMS.aculab.com> References: <20230509150255.3691-1-ubizjak@gmail.com> In-Reply-To: <20230509150255.3691-1-ubizjak@gmail.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,PDS_BAD_THREAD_QP_64, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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 From: Uros Bizjak > Sent: 09 May 2023 16:03 > > 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. While I'm not against the change I bet you can't detect any actual difference. IIRC: - The 'cmp+je' get merged into a single u-op. - The 'lock cmpxchg' will take long enough that the instruction decoder won't be a bottleneck. - Whether the je/jne is predicted taken is pretty much random. So you'll speculatively execute somewhere (could be anywhere) while the locked cycle completes. So the only change is three less bytes of object code. That will change the cache line alignment of later code. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)