From nobody Fri Jan 2 22:05:12 2026 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 B1638E9413E for ; Sat, 7 Oct 2023 02:14:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234103AbjJGCN7 (ORCPT ); Fri, 6 Oct 2023 22:13:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233040AbjJGCNu (ORCPT ); Fri, 6 Oct 2023 22:13:50 -0400 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41C73C6 for ; Fri, 6 Oct 2023 19:13:49 -0700 (PDT) Received: by mail-pl1-x64a.google.com with SMTP id d9443c01a7336-1c754ee3ec5so25982075ad.2 for ; Fri, 06 Oct 2023 19:13:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644829; x=1697249629; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=i5RKZfGZL5ZN24K59cxhmD3rtiYGzQzY3XxKePQ3ZgM=; b=PZCHYazkJSBPB3vomDtueKCVn6riQXW3jReQ2aLLN2jN8Okt+M5tCvynD2bSOPt2oJ hyjvow9RXNGrVHl17EC4bV0M9NfQw200vLGJURYYEwFcFZbw7uRAnQvwMIBdgJZ1+xc9 xNxQTy/yhti1NttJ0YBADgae4F74+i3gyWf3IIjLi0W+F7U0uHBny/bK8Ny+6hXRhzqT w1OjtJ/oqneDg6Lxzsb/CSqhKjTbeC1L6I71B589wYxTOqU8PrSdumNFG09mol5FeSwS Ddyu0/PaC7ktsyiAbpHrxz2lhEZZHA7iTcjMQro39K7nYKiQHyhYdVmpEaZ+VHcShmHq /wIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644829; x=1697249629; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=i5RKZfGZL5ZN24K59cxhmD3rtiYGzQzY3XxKePQ3ZgM=; b=jWeLH+YmxZbI+ComvrqvpYXqkqMMNF6gSNQT9bYXiylGM1GTo7KBw5yXmgOLdEowyS V3rnoGCplK5WCFK2fpKF55htv1dY+30fNT6irC+PKstVjInr8E3EKr9Uxdzb7v/6hhW2 Iy9p1cuLVoBmQl3wqMCCOBU2/NA5mMdwQqcqDLr5COBUVxfMKbtR+oGxxGTQRcWSk2Nn 4g3KJ7fBekawlrSW7Rk8QkKsDeZHYu+u2Hu+/QIoJN0/1QfOBtnHMlRK7n/3MQcD263p 9VsyXVWw4eK+8uowx1Or2m/je5hx+v22XoZ8OFUnAlSsaXEx24wX00+i7HuvHTUxKbBZ rK3g== X-Gm-Message-State: AOJu0Yz+NU1JJDmyZGchRyD+k9d1yU886qyAqZpP8R3Bm2L3NjTvcGE6 shoYI0klModiT3G9/XGWTALk99hOpSdD X-Google-Smtp-Source: AGHT+IFEQHBXRzXKr3+91VRDR8irSgTTsHC729rDg2CcgCqsveTA/8HbK0apOoOyJBuf0flmH7tBJuB9l3t9 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a17:902:c949:b0:1c8:9a60:3885 with SMTP id i9-20020a170902c94900b001c89a603885mr17899pla.13.1696644827821; Fri, 06 Oct 2023 19:13:47 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:20 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-2-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 1/7] perf pmu: Rename perf_pmu__get_default_config to perf_pmu__arch_init From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Assign default_config as part of the init. perf_pmu__get_default_config was doing more than just getting the default config and so this is intended to better align with the code. Signed-off-by: Ian Rogers Reviewed-by: Adrian Hunter --- tools/perf/arch/arm/util/pmu.c | 8 +++----- tools/perf/arch/s390/util/pmu.c | 3 +-- tools/perf/arch/x86/util/pmu.c | 5 ++--- tools/perf/util/pmu.c | 14 +++++++------- tools/perf/util/pmu.h | 2 +- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c index a9623b128ece..d55d2b15f2e6 100644 --- a/tools/perf/arch/arm/util/pmu.c +++ b/tools/perf/arch/arm/util/pmu.c @@ -14,22 +14,20 @@ #include "../../../util/pmu.h" #include "../../../util/cs-etm.h" =20 -struct perf_event_attr -*perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) +void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unused) { #ifdef HAVE_AUXTRACE_SUPPORT if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) { /* add ETM default config here */ pmu->selectable =3D true; - return cs_etm_get_default_config(pmu); + pmu->default_config =3D cs_etm_get_default_config(pmu); #if defined(__aarch64__) } else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) { - return arm_spe_pmu_default_config(pmu); + pmu->default_config =3D arm_spe_pmu_default_config(pmu); } else if (strstarts(pmu->name, HISI_PTT_PMU_NAME)) { pmu->selectable =3D true; #endif } =20 #endif - return NULL; } diff --git a/tools/perf/arch/s390/util/pmu.c b/tools/perf/arch/s390/util/pm= u.c index 11f03f32e3fd..886c30e001fa 100644 --- a/tools/perf/arch/s390/util/pmu.c +++ b/tools/perf/arch/s390/util/pmu.c @@ -13,11 +13,10 @@ #define S390_PMUPAI_EXT "pai_ext" #define S390_PMUCPUM_CF "cpum_cf" =20 -struct perf_event_attr *perf_pmu__get_default_config(struct perf_pmu *pmu) +void perf_pmu__arch_init(struct perf_pmu *pmu) { if (!strcmp(pmu->name, S390_PMUPAI_CRYPTO) || !strcmp(pmu->name, S390_PMUPAI_EXT) || !strcmp(pmu->name, S390_PMUCPUM_CF)) pmu->selectable =3D true; - return NULL; } diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c index 8b53ca468a50..811e2377d2d5 100644 --- a/tools/perf/arch/x86/util/pmu.c +++ b/tools/perf/arch/x86/util/pmu.c @@ -17,19 +17,18 @@ #include "../../../util/pmus.h" #include "env.h" =20 -struct perf_event_attr *perf_pmu__get_default_config(struct perf_pmu *pmu = __maybe_unused) +void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unused) { #ifdef HAVE_AUXTRACE_SUPPORT if (!strcmp(pmu->name, INTEL_PT_PMU_NAME)) { pmu->auxtrace =3D true; - return intel_pt_pmu_default_config(pmu); + pmu->default_config =3D intel_pt_pmu_default_config(pmu); } if (!strcmp(pmu->name, INTEL_BTS_PMU_NAME)) { pmu->auxtrace =3D true; pmu->selectable =3D true; } #endif - return NULL; } =20 int perf_pmus__num_mem_pmus(void) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 6b1b7f8f00fa..6e95b3d2c2e3 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -954,12 +954,6 @@ void pmu_add_sys_aliases(struct perf_pmu *pmu) pmu_for_each_sys_event(pmu_add_sys_aliases_iter_fn, pmu); } =20 -struct perf_event_attr * __weak -perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) -{ - return NULL; -} - static char *pmu_find_alias_name(struct perf_pmu *pmu, int dirfd) { FILE *file =3D perf_pmu__open_file_at(pmu, dirfd, "alias"); @@ -991,6 +985,12 @@ static int pmu_max_precise(int dirfd, struct perf_pmu = *pmu) return max_precise; } =20 + +void __weak +perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unused) +{ +} + struct perf_pmu *perf_pmu__lookup(struct list_head *pmus, int dirfd, const= char *name) { struct perf_pmu *pmu; @@ -1037,7 +1037,7 @@ struct perf_pmu *perf_pmu__lookup(struct list_head *p= mus, int dirfd, const char pmu_add_sys_aliases(pmu); list_add_tail(&pmu->list, pmus); =20 - pmu->default_config =3D perf_pmu__get_default_config(pmu); + perf_pmu__arch_init(pmu); =20 return pmu; err: diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 85190d058852..588c64e38d6b 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -233,7 +233,7 @@ bool perf_pmu__file_exists(struct perf_pmu *pmu, const = char *name); =20 int perf_pmu__test(void); =20 -struct perf_event_attr *perf_pmu__get_default_config(struct perf_pmu *pmu); +void perf_pmu__arch_init(struct perf_pmu *pmu); void pmu_add_cpu_aliases_table(struct perf_pmu *pmu, const struct pmu_events_table *table); =20 --=20 2.42.0.609.gbb76f46606-goog From nobody Fri Jan 2 22:05:12 2026 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 6485CE9413E for ; Sat, 7 Oct 2023 02:13:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234088AbjJGCN4 (ORCPT ); Fri, 6 Oct 2023 22:13:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234069AbjJGCNx (ORCPT ); Fri, 6 Oct 2023 22:13:53 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AB51CA for ; Fri, 6 Oct 2023 19:13:52 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-d86766bba9fso3842066276.1 for ; Fri, 06 Oct 2023 19:13:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644831; x=1697249631; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=8fc7EI+IqMoK5GVnqlsLaiP62BnjpCmFT/Si/B7nJZs=; b=zJgDK0rZ1nQdVyYd+zr+B9/D9pYts8s5cn8NxT4eo6cErsMSnxIZSgwdaWfnfFDJF9 qAajyn8qFg6g2Bbq5qRlhKoj0BIUQm1JqwNMeraEjjZW5ks0dYNyU2JJkv2LTyS2Y30Q Sq/LNG2/3+e7E8P6NqDp0zH7tEkoPOmTAFhvXj4GLz5YLWsyCsYG2S8CHmbOjtpz1Pyu Hn/vRMWAlfnFJK7tqgu02dDExQV0fWZ/Flv6lH+byB7BG8ADP+aVFgcfYyHwWAZ0PVqh PpFSTVE2CL3CB/tZSVNoTFZctRrDajpMUOSaGoO/5vszaIIpskzWjLXCDrFdR6uQdKrl F2wQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644831; x=1697249631; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8fc7EI+IqMoK5GVnqlsLaiP62BnjpCmFT/Si/B7nJZs=; b=UOwGefIpNMFB7g1jZ5ZSNzWacbd233YTWr5LtmQGWQVJ29jaxGfF9QjfNfwtzwoLfV vDYIicVjYV1lKbaWTpMxp90TlGFcsrb0TMY8S6PGsTuWBGtu53sfXsSW7EC4Fp0iecPV yrjMF7f3FaTpWyIscpKUoHZXTbhOZetdz7PRgkldan8o1L/Ox9Hiout/YZd3CxUJXqcH jl6FtmaG6YBHWDz9WvtjopxgPYqdtGiCQqdjph2t2rnhWucKMBPBfxY5jJwFjA7GlTek UgYDrBAkTnO6NMTP3PuCwKhaOcs/nBADpUM5dPFsr7EgUrbrognASoHcAFlzb2/sjkDr b7nw== X-Gm-Message-State: AOJu0YyNb2Z7RgoxC0h3wsGeb0jJjYn9ChKKJvWZQkzvibBXho7Ikz66 Nk159ahvwOFkuUxZX8JCntI5mfT5HTi5 X-Google-Smtp-Source: AGHT+IHrCzJat+rz/BJ6g8m43IhpNWgcQXVdsawjas52P79D5OWVnwHwRJxeKmFFr5isb0ADzqHoPQ82uORz X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a25:e20b:0:b0:d81:817c:582 with SMTP id h11-20020a25e20b000000b00d81817c0582mr155263ybe.7.1696644831137; Fri, 06 Oct 2023 19:13:51 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:21 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-3-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 2/7] perf intel-pt: Move PMU initialization from default config code From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Avoid setting PMU values in intel_pt_pmu_default_config, move to perf_pmu__arch_init. Signed-off-by: Ian Rogers Reviewed-by: Adrian Hunter --- tools/perf/arch/x86/util/intel-pt.c | 2 -- tools/perf/arch/x86/util/pmu.c | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util= /intel-pt.c index b923bca939d9..6d6cd8f9133c 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -267,8 +267,6 @@ intel_pt_pmu_default_config(struct perf_pmu *intel_pt_p= mu) =20 attr->config =3D intel_pt_default_config(intel_pt_pmu); =20 - intel_pt_pmu->selectable =3D true; - return attr; } =20 diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c index 811e2377d2d5..949b3e2c67bd 100644 --- a/tools/perf/arch/x86/util/pmu.c +++ b/tools/perf/arch/x86/util/pmu.c @@ -22,6 +22,7 @@ void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unu= sed) #ifdef HAVE_AUXTRACE_SUPPORT if (!strcmp(pmu->name, INTEL_PT_PMU_NAME)) { pmu->auxtrace =3D true; + pmu->selectable =3D true; pmu->default_config =3D intel_pt_pmu_default_config(pmu); } if (!strcmp(pmu->name, INTEL_BTS_PMU_NAME)) { --=20 2.42.0.609.gbb76f46606-goog From nobody Fri Jan 2 22:05:12 2026 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 AFDD6E9413E for ; Sat, 7 Oct 2023 02:14:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234112AbjJGCOC (ORCPT ); Fri, 6 Oct 2023 22:14:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234096AbjJGCN4 (ORCPT ); Fri, 6 Oct 2023 22:13:56 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8FAE2DE for ; Fri, 6 Oct 2023 19:13:54 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d81e9981ff4so3545416276.3 for ; Fri, 06 Oct 2023 19:13:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644833; x=1697249633; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=Pvm9pouxrmYpafgNbDUzq8jjG9nkQlQXFZB/wFYV4ZY=; b=gIt3Ep8wQrLm5/xI11pGeuKoRgXc+4+1ky3tENwptnfMrV8Dnhm3eUn1Neff+jr1ht nBrZOdSRuch7YtiJZveOIztjN0qXG2QNjG4D/2Tfg4Sd0asjIbseR0Oah4fLyeMSY48S YjBwRKLA297NCyCDHgpE6s8X7N/0ObtaPH37elx4oPFSpgPEUoHJXBX4LZnKt4wsx4On 27bm+ZfEJoxBXe3SB7+49GKV8Zq+8mclPXthEw9fZa46wA3Vdu138lDMb8C0fs4OkOnj iXfNjPP8zqpIpu0nSJWP72ij6NxLspjEyzc5fxRiG2DySZRC5e09/vnediUEpzY2KV8B Ui+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644833; x=1697249633; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Pvm9pouxrmYpafgNbDUzq8jjG9nkQlQXFZB/wFYV4ZY=; b=vTPqKV2lG67NxYkHtJSxUDNXD10V6CI/giRbg5gH3s+BAFVwUZx0Z7AYb0u5zlAbl6 Kb2qU6ex8Rym1Sv5xU7FzYOzXNZm9gdcJpXosheYrJXCNCYTJdRIJUetw/IuW4zT1V8y 9z1WyS0WfVEInoKgniDlV8ltRDMk7AGpMdBKc8uUHJ8NHU3BYBZHm7rC5qnIMQYOYBhc jgiyg2eJTRNerpK8xvqg9IvQlrmRjMS4LkCtQJS/Jv0IV5Q/Pxc/AMKYjX7mbbDkndeV ghWpa7/4d+4JZhIxGlb1ke06D1OuwOzSlJk16Z6dnGQ0E71qcb+OzOuAMBd8HPKfUJ06 +ZZQ== X-Gm-Message-State: AOJu0YzQ7bqD/KOkvTmYYzWB+O4oZDAA8BpwT/pjUign6LFDFmndTrJC KWTR73B0BlPfxwRCHGPi3JlSXK1FxE3n X-Google-Smtp-Source: AGHT+IG/FCsfFR7DMO8ROGGKaKObepHsSbay/fgC+twT50YsCh2lPxyqOr65LGKvE49Mf12qsmL2OTWovX1b X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a25:d313:0:b0:d7b:92d7:5629 with SMTP id e19-20020a25d313000000b00d7b92d75629mr166217ybf.8.1696644833466; Fri, 06 Oct 2023 19:13:53 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:22 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-4-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 3/7] perf arm-spe: Move PMU initialization from default config code From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Avoid setting PMU values in arm_spe_pmu_default_config, move to perf_pmu__arch_init. Signed-off-by: Ian Rogers Reviewed-by: Adrian Hunter --- tools/perf/arch/arm/util/pmu.c | 2 ++ tools/perf/arch/arm64/util/arm-spe.c | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c index d55d2b15f2e6..f25f68f84a94 100644 --- a/tools/perf/arch/arm/util/pmu.c +++ b/tools/perf/arch/arm/util/pmu.c @@ -23,6 +23,8 @@ void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unu= sed) pmu->default_config =3D cs_etm_get_default_config(pmu); #if defined(__aarch64__) } else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) { + pmu->selectable =3D true; + pmu->is_uncore =3D false; pmu->default_config =3D arm_spe_pmu_default_config(pmu); } else if (strstarts(pmu->name, HISI_PTT_PMU_NAME)) { pmu->selectable =3D true; diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/u= til/arm-spe.c index 9cc3d6dcb849..08a76734ccd2 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -516,8 +516,5 @@ struct perf_event_attr attr->sample_period =3D 4096; } =20 - arm_spe_pmu->selectable =3D true; - arm_spe_pmu->is_uncore =3D false; - return attr; } --=20 2.42.0.609.gbb76f46606-goog From nobody Fri Jan 2 22:05:12 2026 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 C88F8E9413E for ; Sat, 7 Oct 2023 02:14:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234124AbjJGCOH (ORCPT ); Fri, 6 Oct 2023 22:14:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234095AbjJGCN7 (ORCPT ); Fri, 6 Oct 2023 22:13:59 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38DACCA for ; Fri, 6 Oct 2023 19:13:57 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-594e1154756so41938067b3.2 for ; Fri, 06 Oct 2023 19:13:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644836; x=1697249636; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=1sGfqKagqGXkVUrcgYGR2LHjgzBLLZ9lBFke+x7gv14=; b=38hu8QC/gJVuyTiA8l1iPgE6WRMZ2f62s8Z+0wMuxjbYdEvIX5+AbTQeiDZk1GUJv/ YPfdwG2XovLgAtzFAgmP7VwPTTvvLgLK6kzpfZOc3kcC5VNlUAlhZczEYgzHQEkmNYPz EOtJLIVGrKo56XhQa4EyPQBU3FQGqHJvPRkQJ5li7OjOrAQT9eY7ZkLNKp+pnRfEj44H wsLebhf9YXVQ4RTnX9UdHUadeNiCC1EdxPmPByFV8d4tyMc50DyepORh22+QHPFVGzT0 182S4OhL9Tn7wbzfw6sONm9xkwRLKNAQaF5scHrNuuSSSwXsprtFFEza+s+Rwo+dXevB 4uzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644836; x=1697249636; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1sGfqKagqGXkVUrcgYGR2LHjgzBLLZ9lBFke+x7gv14=; b=wrn/M93nVu7t1tUfVbkm77vN4SJ27V9qf39UcVaEadbyCKgrqR0PlJQqPwabTKjXDa W3d0nQdcfhA80LrOIREZCg9pisOAPr83wrmfH9YWakZ658iohMT63q2Re6TvSpq57o3s BBfruMePrgkslo+CsJmDd4XnR9lGlEn624cyDmxY2tI7EE10qVWdvY9n1weVLZs5xO48 uMRmslGhrgLHWYEmQFbud0GRvLmUIYg9SI68xqB8/lRX1g6p5t3I0ENwNI8yoIkHowQd tKquMMya49kxW/4iNAQUwzXgrBZGgka5ZWjB9gohxEEYu59z6WoRUWkbZLPEuHY3oQUT yRDw== X-Gm-Message-State: AOJu0Yxik/tZEKEyOyVZkOvlZVSaJ4vBGGI6UrrtQS0vmzrGPaqdLjIK 33BhqnyfCPwuH3FhUdbfYg9+4GQ+M+5P X-Google-Smtp-Source: AGHT+IGPyz728tGRH8ExhK1+QmM65x0nmN9xIVpRL18JfmMySQD/XlSN7mZpyD2UibDvb5iXO/7jdemBmJnt X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a81:aa4d:0:b0:5a1:d4a5:7dff with SMTP id z13-20020a81aa4d000000b005a1d4a57dffmr188765ywk.6.1696644836200; Fri, 06 Oct 2023 19:13:56 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:23 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-5-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 4/7] perf pmu: Const-ify file APIs From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" File APIs don't alter the struct pmu so allow const ones to be passed. Signed-off-by: Ian Rogers Reviewed-by: Adrian Hunter --- tools/perf/util/pmu.c | 12 ++++++------ tools/perf/util/pmu.h | 11 ++++++----- tools/perf/util/python.c | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 6e95b3d2c2e3..e11901c923d7 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -575,7 +575,7 @@ static int perf_pmu__new_alias(struct perf_pmu *pmu, co= nst char *name, return 0; } =20 -static inline bool pmu_alias_info_file(char *name) +static inline bool pmu_alias_info_file(const char *name) { size_t len; =20 @@ -1771,7 +1771,7 @@ bool perf_pmu__is_software(const struct perf_pmu *pmu) return !strcmp(pmu->name, "kprobe") || !strcmp(pmu->name, "uprobe"); } =20 -FILE *perf_pmu__open_file(struct perf_pmu *pmu, const char *name) +FILE *perf_pmu__open_file(const struct perf_pmu *pmu, const char *name) { char path[PATH_MAX]; =20 @@ -1782,7 +1782,7 @@ FILE *perf_pmu__open_file(struct perf_pmu *pmu, const= char *name) return fopen(path, "r"); } =20 -FILE *perf_pmu__open_file_at(struct perf_pmu *pmu, int dirfd, const char *= name) +FILE *perf_pmu__open_file_at(const struct perf_pmu *pmu, int dirfd, const = char *name) { int fd; =20 @@ -1793,7 +1793,7 @@ FILE *perf_pmu__open_file_at(struct perf_pmu *pmu, in= t dirfd, const char *name) return fdopen(fd, "r"); } =20 -int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char= *fmt, +int perf_pmu__scan_file(const struct perf_pmu *pmu, const char *name, cons= t char *fmt, ...) { va_list args; @@ -1810,7 +1810,7 @@ int perf_pmu__scan_file(struct perf_pmu *pmu, const c= har *name, const char *fmt, return ret; } =20 -int perf_pmu__scan_file_at(struct perf_pmu *pmu, int dirfd, const char *na= me, +int perf_pmu__scan_file_at(const struct perf_pmu *pmu, int dirfd, const ch= ar *name, const char *fmt, ...) { va_list args; @@ -1827,7 +1827,7 @@ int perf_pmu__scan_file_at(struct perf_pmu *pmu, int = dirfd, const char *name, return ret; } =20 -bool perf_pmu__file_exists(struct perf_pmu *pmu, const char *name) +bool perf_pmu__file_exists(const struct perf_pmu *pmu, const char *name) { char path[PATH_MAX]; =20 diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 588c64e38d6b..24af7297b522 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -222,14 +222,15 @@ bool pmu__name_match(const struct perf_pmu *pmu, cons= t char *pmu_name); */ bool perf_pmu__is_software(const struct perf_pmu *pmu); =20 -FILE *perf_pmu__open_file(struct perf_pmu *pmu, const char *name); -FILE *perf_pmu__open_file_at(struct perf_pmu *pmu, int dirfd, const char *= name); +FILE *perf_pmu__open_file(const struct perf_pmu *pmu, const char *name); +FILE *perf_pmu__open_file_at(const struct perf_pmu *pmu, int dirfd, const = char *name); =20 -int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char= *fmt, ...) __scanf(3, 4); -int perf_pmu__scan_file_at(struct perf_pmu *pmu, int dirfd, const char *na= me, +int perf_pmu__scan_file(const struct perf_pmu *pmu, const char *name, cons= t char *fmt, ...) + __scanf(3, 4); +int perf_pmu__scan_file_at(const struct perf_pmu *pmu, int dirfd, const ch= ar *name, const char *fmt, ...) __scanf(4, 5); =20 -bool perf_pmu__file_exists(struct perf_pmu *pmu, const char *name); +bool perf_pmu__file_exists(const struct perf_pmu *pmu, const char *name); =20 int perf_pmu__test(void); =20 diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c index c29f5f0bb552..8761f51b5c7c 100644 --- a/tools/perf/util/python.c +++ b/tools/perf/util/python.c @@ -98,7 +98,7 @@ struct perf_pmu *evsel__find_pmu(const struct evsel *evse= l __maybe_unused) return NULL; } =20 -int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char= *fmt, ...) +int perf_pmu__scan_file(const struct perf_pmu *pmu, const char *name, cons= t char *fmt, ...) { return EOF; } --=20 2.42.0.609.gbb76f46606-goog From nobody Fri Jan 2 22:05:12 2026 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 6B0B9E94139 for ; Sat, 7 Oct 2023 02:14:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234135AbjJGCOM (ORCPT ); Fri, 6 Oct 2023 22:14:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234069AbjJGCOE (ORCPT ); Fri, 6 Oct 2023 22:14:04 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3C1C100 for ; Fri, 6 Oct 2023 19:13:59 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d918aef0d0dso3888528276.3 for ; Fri, 06 Oct 2023 19:13:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644839; x=1697249639; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=FLkv57fF17zqRfpQp8SmIixiH1bpbCUPMZ8JZj8EM2M=; b=XxnTRAx7E6ffCQwPnXQtUjxD3n/quOBWFowClBnMNVB8xFJmrZkGoqUMRWh4YjX0lc 5fa2hX0oXn0rLgfRVB9OkliYXPdgsoFv5cdlHlRa2oCzOpa/iJV1KjhSa9kSRJHL0+YH uMVAqUmzMFdErRvDpXBF/o81g2y3QRAhh8i25ugp9/lMmw+dLXu+xgIjztFJBEF3tz2d s+0l7x/ZmGjhWHuBuE5lfAiPvg/dyzf9kplzthdsoGcVPZBIlOFRD48JdFjfZuLLsVFR /QgqSmo495FbSXdq5Q085/1PtCdKwSNHUD22dRk6s9NjIBLbkIgzzaorQoL0ubdFpPxn MF3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644839; x=1697249639; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=FLkv57fF17zqRfpQp8SmIixiH1bpbCUPMZ8JZj8EM2M=; b=KbVKEfuHMC1s497atEuHAtY15gwDXL6pVg5b7SeNYsmiqhGtfKb60BetNXwPTXzHh4 s+C87WHK7G4c6nenRUq+o5gB0eY3IZl0WgCDJP9jInhWzhWC0UEncY2NBwxmHLe/4zsR hvSAa/wJJmMnYlK6gPqa9UbcWtp6sBNncGWwYzXmqHfc0nskZqOaqs31tkSj20AyMRPe 8T6A+tPb45VLRhVRGm6vH8X+8vjs4mxenx0pTY/+UMxlOXopXTuq0qk2HYMbXIMNnC12 bMUQIb3IFT+BZl6H7EgEd2+daXgraLKgvZN08PaV+QH1y3hbe5qcRqfGbmtRFqeNxZGL RiNA== X-Gm-Message-State: AOJu0Yy5sqrRPdD7fPTI6sJvftibk5M3mwHsdRf4gxQQuqb7XdjCaTAS vaCFMkQW73VHkc/EZcYmawli7LQo/KmK X-Google-Smtp-Source: AGHT+IFr63rp55RKJkbeuU4YrN+J9/EmAeZNALLBr+pqjB3TOHVhYPLvtNbiiLUo+VeXGDG6Gu0mRui9MaHH X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a05:6902:990:b0:d89:4382:6d14 with SMTP id bv16-20020a056902099000b00d8943826d14mr156266ybb.6.1696644838851; Fri, 06 Oct 2023 19:13:58 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:24 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-6-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 5/7] perf pmu: Const-ify perf_pmu__config_terms From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add const to related APIs, this is so they can be used to default initialize a perf_event_attr from a const pmu. Signed-off-by: Ian Rogers Reviewed-by: Adrian Hunter --- tools/perf/util/pmu.c | 10 +++++----- tools/perf/util/pmu.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index e11901c923d7..eb17f00bd0d2 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -156,7 +156,7 @@ static void __perf_pmu_format__load(struct perf_pmu_for= mat *format, FILE *file) format->loaded =3D true; } =20 -static void perf_pmu_format__load(struct perf_pmu *pmu, struct perf_pmu_fo= rmat *format) +static void perf_pmu_format__load(const struct perf_pmu *pmu, struct perf_= pmu_format *format) { char path[PATH_MAX]; FILE *file =3D NULL; @@ -1132,7 +1132,7 @@ void evsel__set_config_if_unset(struct perf_pmu *pmu,= struct evsel *evsel, } =20 static struct perf_pmu_format * -pmu_find_format(struct list_head *formats, const char *name) +pmu_find_format(const struct list_head *formats, const char *name) { struct perf_pmu_format *format; =20 @@ -1230,7 +1230,7 @@ static int pmu_resolve_param_term(struct parse_events= _term *term, return -1; } =20 -static char *pmu_formats_string(struct list_head *formats) +static char *pmu_formats_string(const struct list_head *formats) { struct perf_pmu_format *format; char *str =3D NULL; @@ -1256,7 +1256,7 @@ static char *pmu_formats_string(struct list_head *for= mats) * Setup one of config[12] attr members based on the * user input data - term parameter. */ -static int pmu_config_term(struct perf_pmu *pmu, +static int pmu_config_term(const struct perf_pmu *pmu, struct perf_event_attr *attr, struct parse_events_term *term, struct parse_events_terms *head_terms, @@ -1379,7 +1379,7 @@ static int pmu_config_term(struct perf_pmu *pmu, return 0; } =20 -int perf_pmu__config_terms(struct perf_pmu *pmu, +int perf_pmu__config_terms(const struct perf_pmu *pmu, struct perf_event_attr *attr, struct parse_events_terms *terms, bool zero, struct parse_events_error *err) diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 24af7297b522..5a05131aa4ce 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -193,7 +193,7 @@ void pmu_add_sys_aliases(struct perf_pmu *pmu); int perf_pmu__config(struct perf_pmu *pmu, struct perf_event_attr *attr, struct parse_events_terms *head_terms, struct parse_events_error *error); -int perf_pmu__config_terms(struct perf_pmu *pmu, +int perf_pmu__config_terms(const struct perf_pmu *pmu, struct perf_event_attr *attr, struct parse_events_terms *terms, bool zero, struct parse_events_error *error); --=20 2.42.0.609.gbb76f46606-goog From nobody Fri Jan 2 22:05:12 2026 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 224A2E94139 for ; Sat, 7 Oct 2023 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234113AbjJGCOP (ORCPT ); Fri, 6 Oct 2023 22:14:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234126AbjJGCOH (ORCPT ); Fri, 6 Oct 2023 22:14:07 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5AE36111 for ; Fri, 6 Oct 2023 19:14:02 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d8153284d6eso3729991276.3 for ; Fri, 06 Oct 2023 19:14:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644841; x=1697249641; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=2nlT7Ayc6FK2ENh5HApqpyv4FDoAbHTS/CAmbKpgFgU=; b=KVt12koF9lOZAI4EXiciPQ4EuRna0sLnyltatR2YMMKhwQEeVEA18EGT2GtRpTDURy oM+iqas1pxCdAC6QRhFCe7zAxO/AXftg1pX2PczCTYOyeVO7Wbz7S3JNpXWPmVHefxfT j2YCWQSEMbKFkz0ai3b7qINURgbw+OrulMx7rHCwJMzge6/v30pOq2JYwo8SksJI5yiU kE391MoYlPVZxkjv7+45FB3F33bY5mvtyOZzeZg9tsB0FQN1+4iGjW2lv90ujPRBJPAd 5rLq+7G8dG/IUtUkLeeeT5yvEsg1CQ9hOBN/usMjo8GR8OIjPB0FR7zwzH3GzCPDvxN3 9dgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644841; x=1697249641; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2nlT7Ayc6FK2ENh5HApqpyv4FDoAbHTS/CAmbKpgFgU=; b=YJxJ9B2pcZNdxNXuVPKR4VI8V9c1gB0iS1ssfUraN3I4FsUSww7SBDUrFA+ZC3NyuU qoBGpB5kbFHGuLWOnDJ17DwZakmDYbMeIgpyv4WKBa4vMNK9JuCGbAiwoQGUO8PIwbdS ZR97NqnovCM15227GSrQnAW0Ved6hiJvzQP/NvR55AhYtJi2Uz1PcznNdT6mh6X3jOUj 4Z6bUp3eu2JQYZ30t+/UBlzoXwEyzCpATXMoqSs5k5iTVh7mmLoOBOO68nZy+fPx4jV7 dkp3M9uZvwgM+u9MXYLi0aA34UsjO1GecwuLds1SY0KQMjchyKCvien1x8pwwGXkn2Go eALw== X-Gm-Message-State: AOJu0YxZ/ocIKnd7/NmiYksLgRDbOm836NOz376OLnRsZ8g5T5vo6cG+ Ql/LNb/nPJ2PdzQDxkKs1ACKI8XZVPQ2 X-Google-Smtp-Source: AGHT+IHKgnAs25/YJ43kvuHhiiWC2cjxg2u8JYxG3dDXPATXMZW8zvYw7dr0dQFaibX0XwBeXqVh6XfAHREW X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a05:6902:180e:b0:d77:984e:c770 with SMTP id cf14-20020a056902180e00b00d77984ec770mr169264ybb.5.1696644841134; Fri, 06 Oct 2023 19:14:01 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:25 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-7-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 6/7] perf pmu-events: Remember the events and metrics table From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" strcmp_cpuid_str performs regular expression comparisons. Avoid repeated computation of the table by remembering the table in a static. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/jevents.py | 48 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jeven= ts.py index fd009752b427..8d8d5088c53c 100755 --- a/tools/perf/pmu-events/jevents.py +++ b/tools/perf/pmu-events/jevents.py @@ -978,28 +978,32 @@ int pmu_metrics_table__for_each_metric(const struct p= mu_metrics_table *table, =20 const struct pmu_events_table *perf_pmu__find_events_table(struct perf_pmu= *pmu) { - const struct pmu_events_table *table =3D NULL; - char *cpuid =3D perf_pmu__getcpuid(pmu); + static const struct pmu_events_table *table; size_t i; =20 - /* on some platforms which uses cpus map, cpuid can be NULL for - * PMUs other than CORE PMUs. - */ - if (!cpuid) - return NULL; - - i =3D 0; - for (;;) { - const struct pmu_events_map *map =3D &pmu_events_map[i++]; - if (!map->arch) - break; - - if (!strcmp_cpuid_str(map->cpuid, cpuid)) { - table =3D &map->event_table; - break; + if (!table) { + char *cpuid =3D perf_pmu__getcpuid(pmu); + + /* + * On some platforms which uses cpus map, cpuid can be NUL= L for + * PMUs other than CORE PMUs. + */ + if (!cpuid) + return NULL; + + i =3D 0; + for (;;) { + const struct pmu_events_map *map =3D &pmu_events_m= ap[i++]; + if (!map->arch) + break; + + if (!strcmp_cpuid_str(map->cpuid, cpuid)) { + table =3D &map->event_table; + break; + } } + free(cpuid); } - free(cpuid); if (!pmu) return table; =20 @@ -1015,13 +1019,17 @@ const struct pmu_events_table *perf_pmu__find_event= s_table(struct perf_pmu *pmu) =20 const struct pmu_metrics_table *perf_pmu__find_metrics_table(struct perf_p= mu *pmu) { - const struct pmu_metrics_table *table =3D NULL; - char *cpuid =3D perf_pmu__getcpuid(pmu); + static const struct pmu_metrics_table *table; + char *cpuid; int i; =20 + if (table) + return table; + /* on some platforms which uses cpus map, cpuid can be NULL for * PMUs other than CORE PMUs. */ + cpuid =3D perf_pmu__getcpuid(pmu); if (!cpuid) return NULL; =20 --=20 2.42.0.609.gbb76f46606-goog From nobody Fri Jan 2 22:05:12 2026 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 52543E9413F for ; Sat, 7 Oct 2023 02:14:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234132AbjJGCOW (ORCPT ); Fri, 6 Oct 2023 22:14:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234044AbjJGCOP (ORCPT ); Fri, 6 Oct 2023 22:14:15 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 279B0121 for ; Fri, 6 Oct 2023 19:14:04 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d8191a1d5acso3739761276.1 for ; Fri, 06 Oct 2023 19:14:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696644844; x=1697249644; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=yIgMRd+KnF64kis23tajYXI+MaNB1tIKFtcpY6DVTq8=; b=XiO656ZNQkPULnIWNFhPIcerKmP4za5xbGQ/04ZZpTmcsQyGgSxvsYC7oezUbfEaAb zEZT0YmQCuHk/heTXiRBg4etL7JAcaK/4XPpMUyd77jo8hE6Ln4kx1ehOk9dFN+cLv6C F9M1F+MuV80us0oWCv3/oUZuOKLkIiY7SPe5m5GLFGfFRH878gnXKocu8FNNWqp6bQ9s 9FfDQpDJHkJzvJcPa5zQHRrXttDHOVrHtlrhbnjyh2UW/iTWFgWJdFZRGdk8Le6TM6WU YevAaOCmXjZLRCCWL5zuR5B3Sqr6/FuxkF3ivvjvdT9C5RdU0v1pLcxtry5UlcbhrbfQ zblg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696644844; x=1697249644; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yIgMRd+KnF64kis23tajYXI+MaNB1tIKFtcpY6DVTq8=; b=W4N7cLS06f+wugCEXXztcPmqXFOaxF9b7PnxbjAXQRGrVDqGtNiSwlpIL4pkePLYp+ OLeHKxFk0+Clj4OenFV9OV3WenOn8jVguUJLewq3CTW/CUuVAvZUFYNCk/a2dOspuGMk zToJUYeUcMQJUMvcV0KhwcPIXSFCRKVNecgQJkN5OxGWaQxcR7OpZCsjYEzhW5+K1M9Q 39zOygyDj+fmfcpojffJxPbF309Ce78ldbijAAK0jag5cgiStzq99p4Dn8hVl/HLxYlm ahJfA9alhdLIHt/HQWNzEThhRLZY362pZKkZsI0H0bPFOp6ovCH8oZ9BfYKRCv6AmpFe OE5w== X-Gm-Message-State: AOJu0Yx0wvrAgSfsp6q/znQdq08XwTIUJ2mI9gHXpNBH1yLGuAQYvLkF Y136EovI+Jj2JEuKxevCYcaQ2lfgeXdi X-Google-Smtp-Source: AGHT+IFShXNn9G8NqwcakL1tO0qjaY6wTmBn4etMcf19LaHaf3nxVOL452JTUhrMt1iVkJ1rYvFBpKycoYiX X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:7031:b36b:6c77:bfd0]) (user=irogers job=sendgmr) by 2002:a25:ce44:0:b0:d77:8641:670c with SMTP id x65-20020a25ce44000000b00d778641670cmr141821ybe.10.1696644843787; Fri, 06 Oct 2023 19:14:03 -0700 (PDT) Date: Fri, 6 Oct 2023 19:13:26 -0700 In-Reply-To: <20231007021326.4156714-1-irogers@google.com> Message-Id: <20231007021326.4156714-8-irogers@google.com> Mime-Version: 1.0 References: <20231007021326.4156714-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Subject: [PATCH v1 7/7] perf pmu: Lazily compute default config From: Ian Rogers To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Thomas Richter , Ravi Bangoria , Kajol Jain , Jing Zhang , Kan Liang , Yang Jihong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The default config is computed during creation of the PMU and may do things like scanning sysfs, when the PMU may just be used as part of scanning. Change default_config to perf_event_attr_init_default, a callback that is used when a default config needs initializing. This avoids holding onto the memory for a perf_event_attr and copying. On a tigerlake laptop running the pmu-scan benchmark: Before: Running 'internals/pmu-scan' benchmark: Computing performance of sysfs PMU event scan for 100 times Average core PMU scanning took: 28.780 usec (+- 0.503 usec) Average PMU scanning took: 283.480 usec (+- 18.471 usec) Number of openat syscalls: 30,227 After: Running 'internals/pmu-scan' benchmark: Computing performance of sysfs PMU event scan for 100 times Average core PMU scanning took: 27.880 usec (+- 0.169 usec) Average PMU scanning took: 245.260 usec (+- 15.758 usec) Number of openat syscalls: 28,914 Over 3 runs it is a nearly 12% reduction in execution time and a 4.3% of openat calls. Signed-off-by: Ian Rogers Reviewed-by: Adrian Hunter --- tools/perf/arch/arm/util/cs-etm.c | 13 ++------ tools/perf/arch/arm/util/pmu.c | 4 +-- tools/perf/arch/arm64/util/arm-spe.c | 45 ++++++++++++++-------------- tools/perf/arch/x86/util/intel-pt.c | 25 ++++++++-------- tools/perf/arch/x86/util/pmu.c | 2 +- tools/perf/util/arm-spe.h | 4 ++- tools/perf/util/cs-etm.h | 2 +- tools/perf/util/intel-pt.h | 3 +- tools/perf/util/parse-events.c | 12 ++++---- tools/perf/util/pmu.c | 3 +- tools/perf/util/pmu.h | 3 +- 11 files changed, 56 insertions(+), 60 deletions(-) diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/c= s-etm.c index b8d6a953fd74..16bba74f048b 100644 --- a/tools/perf/arch/arm/util/cs-etm.c +++ b/tools/perf/arch/arm/util/cs-etm.c @@ -917,16 +917,9 @@ struct auxtrace_record *cs_etm_record_init(int *err) * (CFG_CHG and evsel__set_config_if_unset()). If no default is set then u= ser * changes aren't tracked. */ -struct perf_event_attr * -cs_etm_get_default_config(struct perf_pmu *pmu __maybe_unused) +void +cs_etm_get_default_config(const struct perf_pmu *pmu __maybe_unused, + struct perf_event_attr *attr) { - struct perf_event_attr *attr; - - attr =3D zalloc(sizeof(struct perf_event_attr)); - if (!attr) - return NULL; - attr->sample_period =3D 1; - - return attr; } diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c index f25f68f84a94..7f3af3b97f3b 100644 --- a/tools/perf/arch/arm/util/pmu.c +++ b/tools/perf/arch/arm/util/pmu.c @@ -20,12 +20,12 @@ void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_u= nused) if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) { /* add ETM default config here */ pmu->selectable =3D true; - pmu->default_config =3D cs_etm_get_default_config(pmu); + pmu->perf_event_attr_init_default =3D cs_etm_get_default_config; #if defined(__aarch64__) } else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) { pmu->selectable =3D true; pmu->is_uncore =3D false; - pmu->default_config =3D arm_spe_pmu_default_config(pmu); + pmu->perf_event_attr_init_default =3D arm_spe_pmu_default_config; } else if (strstarts(pmu->name, HISI_PTT_PMU_NAME)) { pmu->selectable =3D true; #endif diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/u= til/arm-spe.c index 08a76734ccd2..e3acc739bd00 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -113,6 +113,25 @@ arm_spe_snapshot_resolve_auxtrace_defaults(struct reco= rd_opts *opts, } } =20 +static __u64 arm_spe_pmu__sample_period(const struct perf_pmu *arm_spe_pmu) +{ + static __u64 sample_period; + + if (sample_period) + return sample_period; + + /* + * If kernel driver doesn't advertise a minimum, + * use max allowable by PMSIDR_EL1.INTERVAL + */ + if (perf_pmu__scan_file(arm_spe_pmu, "caps/min_interval", "%llu", + &sample_period) !=3D 1) { + pr_debug("arm_spe driver doesn't advertise a min. interval. Using 4096\n= "); + sample_period =3D 4096; + } + return sample_period; +} + static int arm_spe_recording_options(struct auxtrace_record *itr, struct evlist *evlist, struct record_opts *opts) @@ -136,7 +155,7 @@ static int arm_spe_recording_options(struct auxtrace_re= cord *itr, return -EINVAL; } evsel->core.attr.freq =3D 0; - evsel->core.attr.sample_period =3D arm_spe_pmu->default_config->sample_= period; + evsel->core.attr.sample_period =3D arm_spe_pmu__sample_period(arm_spe_p= mu); evsel->needs_auxtrace_mmap =3D true; arm_spe_evsel =3D evsel; opts->full_auxtrace =3D true; @@ -495,26 +514,8 @@ struct auxtrace_record *arm_spe_recording_init(int *er= r, return &sper->itr; } =20 -struct perf_event_attr -*arm_spe_pmu_default_config(struct perf_pmu *arm_spe_pmu) +void +arm_spe_pmu_default_config(const struct perf_pmu *arm_spe_pmu, struct perf= _event_attr *attr) { - struct perf_event_attr *attr; - - attr =3D zalloc(sizeof(struct perf_event_attr)); - if (!attr) { - pr_err("arm_spe default config cannot allocate a perf_event_attr\n"); - return NULL; - } - - /* - * If kernel driver doesn't advertise a minimum, - * use max allowable by PMSIDR_EL1.INTERVAL - */ - if (perf_pmu__scan_file(arm_spe_pmu, "caps/min_interval", "%llu", - &attr->sample_period) !=3D 1) { - pr_debug("arm_spe driver doesn't advertise a min. interval. Using 4096\n= "); - attr->sample_period =3D 4096; - } - - return attr; + attr->sample_period =3D arm_spe_pmu__sample_period(arm_spe_pmu); } diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util= /intel-pt.c index 6d6cd8f9133c..fa0c718b9e72 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -60,7 +60,7 @@ struct intel_pt_recording { size_t priv_size; }; =20 -static int intel_pt_parse_terms_with_default(struct perf_pmu *pmu, +static int intel_pt_parse_terms_with_default(const struct perf_pmu *pmu, const char *str, u64 *config) { @@ -84,7 +84,7 @@ static int intel_pt_parse_terms_with_default(struct perf_= pmu *pmu, return err; } =20 -static int intel_pt_parse_terms(struct perf_pmu *pmu, const char *str, u64= *config) +static int intel_pt_parse_terms(const struct perf_pmu *pmu, const char *st= r, u64 *config) { *config =3D 0; return intel_pt_parse_terms_with_default(pmu, str, config); @@ -177,7 +177,7 @@ static int intel_pt_pick_bit(int bits, int target) return pick; } =20 -static u64 intel_pt_default_config(struct perf_pmu *intel_pt_pmu) +static u64 intel_pt_default_config(const struct perf_pmu *intel_pt_pmu) { char buf[256]; int mtc, mtc_periods =3D 0, mtc_period; @@ -256,18 +256,17 @@ static int intel_pt_parse_snapshot_options(struct aux= trace_record *itr, return 0; } =20 -struct perf_event_attr * -intel_pt_pmu_default_config(struct perf_pmu *intel_pt_pmu) +void intel_pt_pmu_default_config(const struct perf_pmu *intel_pt_pmu, + struct perf_event_attr *attr) { - struct perf_event_attr *attr; + static u64 config; + static bool initialized; =20 - attr =3D zalloc(sizeof(struct perf_event_attr)); - if (!attr) - return NULL; - - attr->config =3D intel_pt_default_config(intel_pt_pmu); - - return attr; + if (!initialized) { + config =3D intel_pt_default_config(intel_pt_pmu); + initialized =3D true; + } + attr->config =3D config; } =20 static const char *intel_pt_find_filter(struct evlist *evlist, diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c index 949b3e2c67bd..469555ae9b3c 100644 --- a/tools/perf/arch/x86/util/pmu.c +++ b/tools/perf/arch/x86/util/pmu.c @@ -23,7 +23,7 @@ void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unu= sed) if (!strcmp(pmu->name, INTEL_PT_PMU_NAME)) { pmu->auxtrace =3D true; pmu->selectable =3D true; - pmu->default_config =3D intel_pt_pmu_default_config(pmu); + pmu->perf_event_attr_init_default =3D intel_pt_pmu_default_config; } if (!strcmp(pmu->name, INTEL_BTS_PMU_NAME)) { pmu->auxtrace =3D true; diff --git a/tools/perf/util/arm-spe.h b/tools/perf/util/arm-spe.h index 98d3235781c3..4f4900c18f3e 100644 --- a/tools/perf/util/arm-spe.h +++ b/tools/perf/util/arm-spe.h @@ -27,5 +27,7 @@ struct auxtrace_record *arm_spe_recording_init(int *err, int arm_spe_process_auxtrace_info(union perf_event *event, struct perf_session *session); =20 -struct perf_event_attr *arm_spe_pmu_default_config(struct perf_pmu *arm_sp= e_pmu); +void arm_spe_pmu_default_config(const struct perf_pmu *arm_spe_pmu, + struct perf_event_attr *attr); + #endif diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h index 7cca37887917..4696267a32f0 100644 --- a/tools/perf/util/cs-etm.h +++ b/tools/perf/util/cs-etm.h @@ -242,7 +242,7 @@ struct cs_etm_packet_queue { =20 int cs_etm__process_auxtrace_info(union perf_event *event, struct perf_session *session); -struct perf_event_attr *cs_etm_get_default_config(struct perf_pmu *pmu); +void cs_etm_get_default_config(const struct perf_pmu *pmu, struct perf_eve= nt_attr *attr); =20 enum cs_etm_pid_fmt { CS_ETM_PIDFMT_NONE, diff --git a/tools/perf/util/intel-pt.h b/tools/perf/util/intel-pt.h index c7d6068e3a6b..18fd0be52e6c 100644 --- a/tools/perf/util/intel-pt.h +++ b/tools/perf/util/intel-pt.h @@ -42,6 +42,7 @@ struct auxtrace_record *intel_pt_recording_init(int *err); int intel_pt_process_auxtrace_info(union perf_event *event, struct perf_session *session); =20 -struct perf_event_attr *intel_pt_pmu_default_config(struct perf_pmu *pmu); +void intel_pt_pmu_default_config(const struct perf_pmu *intel_pt_pmu, + struct perf_event_attr *attr); =20 #endif diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index c56e07bd7dd6..ea5579510b97 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1418,11 +1418,10 @@ int parse_events_add_pmu(struct parse_events_state = *parse_state, } fix_raw(&parsed_terms, pmu); =20 - if (pmu->default_config) { - memcpy(&attr, pmu->default_config, sizeof(struct perf_event_attr)); - } else { - memset(&attr, 0, sizeof(attr)); - } + memset(&attr, 0, sizeof(attr)); + if (pmu->perf_event_attr_init_default) + pmu->perf_event_attr_init_default(pmu, &attr); + attr.type =3D pmu->type; =20 if (list_empty(&parsed_terms.terms)) { @@ -1466,7 +1465,8 @@ int parse_events_add_pmu(struct parse_events_state *p= arse_state, * When using default config, record which bits of attr->config were * changed by the user. */ - if (pmu->default_config && get_config_chgs(pmu, &parsed_terms, &config_te= rms)) { + if (pmu->perf_event_attr_init_default && + get_config_chgs(pmu, &parsed_terms, &config_terms)) { parse_events_terms__exit(&parsed_terms); return -ENOMEM; } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index eb17f00bd0d2..a87371eb750e 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1403,7 +1403,7 @@ int perf_pmu__config(struct perf_pmu *pmu, struct per= f_event_attr *attr, struct parse_events_terms *head_terms, struct parse_events_error *err) { - bool zero =3D !!pmu->default_config; + bool zero =3D !!pmu->perf_event_attr_init_default; =20 return perf_pmu__config_terms(pmu, attr, head_terms, zero, err); } @@ -2065,7 +2065,6 @@ void perf_pmu__delete(struct perf_pmu *pmu) =20 perf_cpu_map__put(pmu->cpus); =20 - zfree(&pmu->default_config); zfree(&pmu->name); zfree(&pmu->alias_name); zfree(&pmu->id); diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 5a05131aa4ce..1e05cbb4b4f9 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -95,7 +95,8 @@ struct perf_pmu { * @default_config: Optional default perf_event_attr determined in * architecture specific code. */ - struct perf_event_attr *default_config; + void (*perf_event_attr_init_default)(const struct perf_pmu *pmu, + struct perf_event_attr *attr); /** * @cpus: Empty or the contents of either of: * /bus/event_source/devices//cpumask. --=20 2.42.0.609.gbb76f46606-goog