From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CB63CC77B7C for ; Fri, 28 Apr 2023 00:33:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344541AbjD1AdK (ORCPT ); Thu, 27 Apr 2023 20:33:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344540AbjD1AdI (ORCPT ); Thu, 27 Apr 2023 20:33:08 -0400 Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E944F5582 for ; Thu, 27 Apr 2023 17:32:38 -0700 (PDT) Received: by mail-qt1-x830.google.com with SMTP id d75a77b69052e-3ef34c49cb9so869181cf.1 for ; Thu, 27 Apr 2023 17:32:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1682641957; x=1685233957; 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=kJaY9sgaqKLUmeW0DT4PpZqe8svi0MLaSjCCEjhIrtI=; b=pfVTkOVNi1QXcT1uTFiTcD8+HIfY8ZOmRtmS4qP4m5u3RIksUetT36jzwry0hhMOzj ocKVJzhrS7E1VrRRfNhRFD57wImEa0XLNL1YWX40M7B+arP1Iq7nv2c73KDgP/H0AfmS fcsOFoejBQyETzM7aaJPz23RiAojihr611xMC1rlyOP1liMzRFizIUFveFWx9qF1jsGJ yifRJYeZHlUlyEbdn3SZHT2Lr2bSEt+roEW96PEpSaNrtV+k1m1v8tUcz2xMSjyPdJyO 826dqo3oPIO7h8pIyb14hTh5/3mnPUN8q8IKNAdWLRMqcNinaIk6LjQj4Wqm7VWnU5cP /qBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682641957; x=1685233957; 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=kJaY9sgaqKLUmeW0DT4PpZqe8svi0MLaSjCCEjhIrtI=; b=dLdf7D3MWq72+Lc5OPmvz8h7m5peLnHO4xO8sStS/FoHgP+yHoRizxockVKkC+8R6U VF4kWmjqjIXHQcHfc15gPFyAACQj+mw0wGyjzxmcqhixpgrBqszSn4Sy0j23FHVxy8PG awLXPLItipFoMocCx7q5NjNfkdzrfBklgIA4h4eZRVe1+AsJqq6atnfNRBOSFDCP2Ehj 7wXrDtDK2ir8lsQ3mX5acODcjrFjV60Hll8Ud2uclfAhQHX3fcCBYoqcMqZUj1QNTTk8 kbR212Hmu/MEq4TcaybYGPg73z5005bqXCf1hQ8ORURcg8HbAZXP3WsnYgzC0SAFR05T QkWw== X-Gm-Message-State: AC+VfDw3+A8x5ZidQWjE+xGp2WyZbSe6B0XfcWCVsC9e8gjMC/Yfnpia pk1Pc02MUjy2UCxu71zSZw+QXiuIR2pgF4bcnzFFew== X-Google-Smtp-Source: ACHHUZ4Mn9fA1Rv+pb1tCRREtcv+IVBtvXoEZK3Oaafli+Lta5PSWy5CQIDM1vdPr+yiXWvEtBHlctK7/LNcLIEZEcw= X-Received: by 2002:a05:622a:1a0e:b0:3ef:3510:7c3a with SMTP id f14-20020a05622a1a0e00b003ef35107c3amr73868qtb.3.1682641957523; Thu, 27 Apr 2023 17:32:37 -0700 (PDT) MIME-Version: 1.0 References: <20230427234833.1576130-1-namhyung@kernel.org> <20230427234833.1576130-2-namhyung@kernel.org> In-Reply-To: <20230427234833.1576130-2-namhyung@kernel.org> From: Ian Rogers Date: Thu, 27 Apr 2023 17:32:26 -0700 Message-ID: Subject: Re: [PATCH 2/2] perf lock contention: Rework offset calculation with BPF CO-RE To: Namhyung Kim Cc: Arnaldo Carvalho de Melo , Jiri Olsa , Adrian Hunter , Peter Zijlstra , Ingo Molnar , LKML , linux-perf-users@vger.kernel.org, bpf@vger.kernel.org, Andrii Nakryiko , Hao Luo , Song Liu , Andrii Nakryiko Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org On Thu, Apr 27, 2023 at 4:48=E2=80=AFPM Namhyung Kim = wrote: > > It seems BPF CO-RE reloc doesn't work well with the pattern that gets > the field-offset only. Use offsetof() to make it explicit so that > the compiler would generate the correct code. > > Fixes: 0c1228486bef ("perf lock contention: Support pre-5.14 kernels") > Co-developed-by: Andrii Nakryiko > Signed-off-by: Namhyung Kim Acked-by: Ian Rogers Thanks, Ian > --- > tools/perf/util/bpf_skel/lock_contention.bpf.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/tools/perf/util/bpf_skel/lock_contention.bpf.c b/tools/perf/= util/bpf_skel/lock_contention.bpf.c > index 30c193078bdb..8d3cfbb3cc65 100644 > --- a/tools/perf/util/bpf_skel/lock_contention.bpf.c > +++ b/tools/perf/util/bpf_skel/lock_contention.bpf.c > @@ -429,21 +429,21 @@ struct rq___new { > SEC("raw_tp/bpf_test_finish") > int BPF_PROG(collect_lock_syms) > { > - __u64 lock_addr; > + __u64 lock_addr, lock_off; > __u32 lock_flag; > > + if (bpf_core_field_exists(struct rq___new, __lock)) > + lock_off =3D offsetof(struct rq___new, __lock); > + else > + lock_off =3D offsetof(struct rq___old, lock); > + > for (int i =3D 0; i < MAX_CPUS; i++) { > struct rq *rq =3D bpf_per_cpu_ptr(&runqueues, i); > - struct rq___new *rq_new =3D (void *)rq; > - struct rq___old *rq_old =3D (void *)rq; > > if (rq =3D=3D NULL) > break; > > - if (bpf_core_field_exists(rq_new->__lock)) > - lock_addr =3D (__u64)&rq_new->__lock; > - else > - lock_addr =3D (__u64)&rq_old->lock; > + lock_addr =3D (__u64)(void *)rq + lock_off; > lock_flag =3D LOCK_CLASS_RQLOCK; > bpf_map_update_elem(&lock_syms, &lock_addr, &lock_flag, B= PF_ANY); > } > -- > 2.40.1.495.gc816e09b53d-goog >