All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: James Clark <james.clark@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>,
	John Garry <john.g.garry@oracle.com>,
	Will Deacon <will@kernel.org>, Leo Yan <leo.yan@linux.dev>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org,
	Leo Yan <leo.yan@arm.com>
Subject: Re: [PATCH v4 00/14] perf cs-etm/arm-spe: Remove hard coded config fields
Date: Tue, 13 Jan 2026 18:01:37 -0300	[thread overview]
Message-ID: <aWaysdXYIWi4nB1D@x1> (raw)
In-Reply-To: <20251222-james-perf-config-bits-v4-0-0608438186fc@linaro.org>

On Mon, Dec 22, 2025 at 03:14:25PM +0000, James Clark wrote:
> The specific config field that an event format attribute is in is
> consistently hard coded, even though the API is supposed to be that the
> driver publishes the config field name. To stop this pattern from being
> copy pasted and causing problems in the future, replace them all with
> calls to a new helper that returns the value that a user set.
> 
> This reveals some issues in evsel__set_config_if_unset(). It doesn't
> work with sparse bitfields, which are an unused but documented feature.
> And it also only writes to the attr.config field. To fix it we need to
> start tracking user changes for all config fields and then use existing
> helper functions that support sparse bitfields. Some other refactoring
> was also required and a test was added.

Thanks, applied to perf-tools-next,

- Arnaldo
 
> ---
> Changes in v4:
> - Constify some function args (Ian)
> - Move some evsel__* functions to evsel.c and make some pmu.c functions
>   public to support this (Ian)
> - Drop pmu arg where it can be fetched from evsel->pmu (Ian)
> - Link to v3: https://lore.kernel.org/r/20251212-james-perf-config-bits-v3-0-aa36a4846776@linaro.org
> 
> Changes in v3:
> - Fix uninitialized variable warning on GCC
> - Fix leak of evlist in test
> - Confirm no type punning issues with ubsan (Ian)
> - Link to v2: https://lore.kernel.org/r/20251208-james-perf-config-bits-v2-0-4ac0281993b0@linaro.org
> 
> Changes in v2:
> - Remove macros in get_config_chgs() and some other refactoring.
> - Support sparse bitfields in evsel__set_config_if_unset().
> - Always track user changes instead of only when
>   'pmu->perf_event_attr_init_default' is set.
> - Add a test.
> - Don't bail out in cs-etm.c if any format fields are missing (Leo).
> - Rename 'guess' to 'synth' (Mike).
> - Link to v1: https://lore.kernel.org/r/20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org
> 
> ---
> James Clark (14):
>       perf parse-events: Refactor get_config_terms() to remove macros
>       perf evsel: Refactor evsel__set_config_if_unset() arguments
>       perf evsel: Move evsel__* functions to evsel.c
>       perf evsel: Support sparse fields in evsel__set_config_if_unset()
>       perf parse-events: Track all user changed config bits
>       perf evsel: apply evsel__set_config_if_unset() to all config fields
>       perf evsel: Add a helper to get the value of a config field
>       perf parse-events: Always track user config changes
>       perf tests: Test evsel__set_config_if_unset() and config change tracking
>       perf cs-etm: Make a helper to find the Coresight evsel
>       perf cs-etm: Don't use hard coded config bits when setting up ETMCR
>       perf cs-etm: Don't use hard coded config bits when setting up TRCCONFIGR
>       perf cs-etm: Don't hard code config attribute when configuring the event
>       perf arm-spe: Don't hard code config attribute
> 
>  tools/perf/arch/arm/util/cs-etm.c    | 201 +++++++++++++++-------------
>  tools/perf/arch/arm64/util/arm-spe.c |  17 +--
>  tools/perf/arch/x86/util/intel-pt.c  |   3 +-
>  tools/perf/tests/pmu.c               |  91 +++++++++++++
>  tools/perf/util/evsel.c              | 112 +++++++++++++++-
>  tools/perf/util/evsel.h              |   6 +-
>  tools/perf/util/evsel_config.h       |   7 +-
>  tools/perf/util/parse-events.c       | 248 ++++++++++++++++++++---------------
>  tools/perf/util/pmu.c                |  95 ++++----------
>  tools/perf/util/pmu.h                |  34 ++++-
>  10 files changed, 529 insertions(+), 285 deletions(-)
> ---
> base-commit: cbd41c6d4c26c161a2b0e70ad411d3885ff13507
> change-id: 20251112-james-perf-config-bits-bee7106f0f00
> 
> Best regards,
> -- 
> James Clark <james.clark@linaro.org>
> 


      parent reply	other threads:[~2026-01-13 21:01 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-22 15:14 [PATCH v4 00/14] perf cs-etm/arm-spe: Remove hard coded config fields James Clark
2025-12-22 15:14 ` [PATCH v4 01/14] perf parse-events: Refactor get_config_terms() to remove macros James Clark
2026-01-13 20:53   ` Arnaldo Carvalho de Melo
2025-12-22 15:14 ` [PATCH v4 02/14] perf evsel: Refactor evsel__set_config_if_unset() arguments James Clark
2026-01-13 22:13   ` Arnaldo Carvalho de Melo
2026-01-14 12:14     ` James Clark
2026-01-14 13:33       ` James Clark
2026-01-14 15:47       ` Arnaldo Carvalho de Melo
2026-01-14 15:58         ` James Clark
2025-12-22 15:14 ` [PATCH v4 03/14] perf evsel: Move evsel__* functions to evsel.c James Clark
2025-12-22 15:14 ` [PATCH v4 04/14] perf evsel: Support sparse fields in evsel__set_config_if_unset() James Clark
2025-12-22 15:14 ` [PATCH v4 05/14] perf parse-events: Track all user changed config bits James Clark
2025-12-22 15:14 ` [PATCH v4 06/14] perf evsel: apply evsel__set_config_if_unset() to all config fields James Clark
2025-12-22 15:14 ` [PATCH v4 07/14] perf evsel: Add a helper to get the value of a config field James Clark
2025-12-22 15:14 ` [PATCH v4 08/14] perf parse-events: Always track user config changes James Clark
2025-12-22 15:14 ` [PATCH v4 09/14] perf tests: Test evsel__set_config_if_unset() and config change tracking James Clark
2025-12-22 15:14 ` [PATCH v4 10/14] perf cs-etm: Make a helper to find the Coresight evsel James Clark
2025-12-22 15:14 ` [PATCH v4 11/14] perf cs-etm: Don't use hard coded config bits when setting up ETMCR James Clark
2025-12-22 15:14 ` [PATCH v4 12/14] perf cs-etm: Don't use hard coded config bits when setting up TRCCONFIGR James Clark
2025-12-22 15:14 ` [PATCH v4 13/14] perf cs-etm: Don't hard code config attribute when configuring the event James Clark
2025-12-22 15:14 ` [PATCH v4 14/14] perf arm-spe: Don't hard code config attribute James Clark
2026-01-13 20:58 ` [PATCH v4 00/14] perf cs-etm/arm-spe: Remove hard coded config fields Ian Rogers
2026-01-13 21:03   ` Arnaldo Carvalho de Melo
2026-01-13 21:01 ` Arnaldo Carvalho de Melo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aWaysdXYIWi4nB1D@x1 \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=coresight@lists.linaro.org \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=john.g.garry@oracle.com \
    --cc=jolsa@kernel.org \
    --cc=leo.yan@arm.com \
    --cc=leo.yan@linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.