Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp27337747rwd; Tue, 4 Jul 2023 01:18:02 -0700 (PDT) X-Google-Smtp-Source: APBJJlFFVrzYeaXCXp8oDk3aPGdBBd5VWqvlB6paDmOZs7hnkM8GoT6FEUKJZ5nK7lLKZHU69H9n X-Received: by 2002:a17:903:2351:b0:1b8:7616:82d4 with SMTP id c17-20020a170903235100b001b8761682d4mr15181329plh.19.1688458682084; Tue, 04 Jul 2023 01:18:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688458682; cv=none; d=google.com; s=arc-20160816; b=YUf7tNSVI98oVehPfk6l7ShD2z8zcmlpAq8+mR6nEFxi/BkWa0imftNuTWx40sGTI7 x/hCRtgwPk9/aIxUpQCygS77y1rdfjAdX49+O3i76Vl1PHUissycDBkOWq+5ZqZmXKyj 9GC+PNA2qyxkOKICCrIWz+/JYt0/K0CV0rEK0wARz/rEIHp6xJDqLv6gfnXgrNmFRzXL 0l57/06bDQAVITKYDUeCa4NdWWd8Qank3cqmsnwm9X9nT91BBZP2NI44+k882E4g93X/ ySBmm8Rtz0HGB2DaSUBpu1nXr0uKD99oYajMuvclnVtEpDJ+VYjfq0kreWb+v4ji3T4E vpxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=CVWPGfFaZM7RIjrMZBy1U4ap/sNPrOgYsjGHVnmKQSk=; fh=88QWIkYHCJL0VcOHBQYJvz7El4qQLKmUdCRKFaBflTY=; b=a6qSVBhyTPrrq394mntZE1D9GU5CcHDnm2RERuHWe7VQhr6hZ/LWjghlOOghbStfKj 821DuzwPS0zvIQ528SXfe035jw3NwqV7/qmgBZ4vP+9VE2Q2NM54OW9o5b0IZ9eH1cE/ NkbbTyNRKz3QkObjd2y9WqI1elEUseCAM6cG720u6uU2EtT8ZjTx+9q+HZIPRWo36Fpn Oid5AKzQpCpb/FJcobXorGOxLFk6TmajUxVl670CqPU4ELnPeyhVxgfBd6zO9xN/0gnc CRo9qjEf9v5wMaG6kDD0yayktBVVKUKmIDAP8Y0lVXO+pyxATrmNsdMhG/twPp3hBrZV X9mQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=b2Q098KQ; 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 c3-20020a170902724300b001b7e5ed70d4si18582652pll.440.2023.07.04.01.17.47; Tue, 04 Jul 2023 01:18:02 -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=b2Q098KQ; 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 S230218AbjGDIGQ (ORCPT + 99 others); Tue, 4 Jul 2023 04:06:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231497AbjGDIGF (ORCPT ); Tue, 4 Jul 2023 04:06:05 -0400 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE27D10E4 for ; Tue, 4 Jul 2023 01:05:59 -0700 (PDT) Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-51d9128494cso4987644a12.0 for ; Tue, 04 Jul 2023 01:05:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688457958; x=1691049958; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=CVWPGfFaZM7RIjrMZBy1U4ap/sNPrOgYsjGHVnmKQSk=; b=b2Q098KQfFtpS7gTPdbmgBLG6y6WnS0W4y9w15Mk6VXLKw1YWBD+7g/Z+VmdPH+PFz 3RwrbMdE1TcSlKbe6kOsVFP6L5hMYedQEPgAyv2qwi59D6ErYxrSAXczjgxk42JyUsGN OH8OCWfJoTTLzDjWMHKGs7LZY384TmGEUV8rVE+9vnK3fWFQz/4D2IojDuU8v/TmbF0D L0UgKj0lwWON50ppAOvCvY/hKOHZur9fxXgK78td25ykVYgtgewaB0iX7rmLmOsDVCiA yI2zx+Hsn9r8i2GgKggPNsc4ThKwcz0CrfNMLXhYsjqqfJcxI1UoidEFs9zQIcqvF/lD t+cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688457958; x=1691049958; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CVWPGfFaZM7RIjrMZBy1U4ap/sNPrOgYsjGHVnmKQSk=; b=J4nhB36auTYnhsthJjwun62nOlmsnN1+ZiygzRptpNtGxwPGcKpqllCg/rAcoE/gb8 LZ1niUpUy8OtbbTDsuf/5u2slrCaqBajnEAf2KwT11Edbcz6s0fh07sWrd4HwnF9NPwW WTvOJEQifMK0qXs9FKHBDkCPgq/K44CuzsNk/lDLcrr/hl2o9q5xV7pLevsgz157yM57 krXcketzNrcVxp9Ss5ZsIyMQ2RCgdXBHI+jFCrlWoatPbWHMWfCEJNAa+r5RilRaLGoJ 683jxvNqd+W4pUGcchMHLNIIm2g1uOxpvHfsrQcs7Vw2MOshFB37nX0fIblDWBwDbUYd pYNQ== X-Gm-Message-State: ABy/qLbR+SiRp5xanjXiHnSQvFVS4w3oijzNwN+oEHKa3qc2GXUXadMb /6LPEmgl3HpJ8aYBO5oGjcvZrIOaw0eEMyfCrUGPa00vZ8A9tw== X-Received: by 2002:a05:6402:4496:b0:51d:d41b:26a5 with SMTP id er22-20020a056402449600b0051dd41b26a5mr9120655edb.14.1688457957804; Tue, 04 Jul 2023 01:05:57 -0700 (PDT) MIME-Version: 1.0 References: <20230703150859.6176-1-ubizjak@gmail.com> <87o7ks16gh.fsf@intel.com> In-Reply-To: <87o7ks16gh.fsf@intel.com> From: Uros Bizjak Date: Tue, 4 Jul 2023 10:05:46 +0200 Message-ID: Subject: Re: [PATCH] drm/i915/pmu: Use local64_try_cmpxchg in i915_pmu_event_read To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 On Tue, Jul 4, 2023 at 9:28=E2=80=AFAM Jani Nikula wrote: > > On Mon, 03 Jul 2023, Uros Bizjak wrote: > > Use local64_try_cmpxchg instead of local64_cmpxchg (*ptr, old, new) =3D= =3D old > > in i915_pmu_event_read. x86 CMPXCHG instruction returns success in ZF = flag, > > so this change saves a compare after cmpxchg (and related move instruct= ion > > in front of cmpxchg). > > > > Also, try_cmpxchg implicitly assigns old *ptr value to "old" when cmpxc= hg > > fails. There is no need to re-read the value in the loop. > > > > No functional change intended. > > > > Cc: Jani Nikula > > Cc: Joonas Lahtinen > > Cc: Rodrigo Vivi > > Cc: Tvrtko Ursulin > > Cc: David Airlie > > Cc: Daniel Vetter > > Signed-off-by: Uros Bizjak > > --- > > drivers/gpu/drm/i915/i915_pmu.c | 9 ++++----- > > 1 file changed, 4 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i91= 5_pmu.c > > index d35973b41186..108b675088ba 100644 > > --- a/drivers/gpu/drm/i915/i915_pmu.c > > +++ b/drivers/gpu/drm/i915/i915_pmu.c > > @@ -696,12 +696,11 @@ static void i915_pmu_event_read(struct perf_event= *event) > > event->hw.state =3D PERF_HES_STOPPED; > > return; > > } > > -again: > > - prev =3D local64_read(&hwc->prev_count); > > - new =3D __i915_pmu_event_read(event); > > > > - if (local64_cmpxchg(&hwc->prev_count, prev, new) !=3D prev) > > - goto again; > > + prev =3D local64_read(&hwc->prev_count); > > + do { > > + new =3D __i915_pmu_event_read(event); > > + } while (!local64_try_cmpxchg(&hwc->prev_count, &prev, new)); > > You could save everyone a lot of time by actually documenting what these > functions do. Assume you don't know what local64_try_cmpxchg() does, and > see how many calls you have to go through to figure it out. These functions are documented in Documentation/atomic_t.txt (under "RMW ops:" section), and the difference is explained in a separate section "CMPXCHG vs TRY_CMPXCGS" in the same file. Uros. > Because the next time I encounter this code or a patch like this, I'm > probably going to have to do that again. > > To me, the old one was more readable. The optimization is meaningless to > me if it's not quantified but reduces readability. > > > BR, > Jani. > > > > > > local64_add(new - prev, &event->count); > > } > > -- > Jani Nikula, Intel Open Source Graphics Center