mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: James Clark <james.clark@linaro.org>
To: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Jonathan Corbet <corbet@lwn.net>, Marc Zyngier <maz@kernel.org>,
	Oliver Upton <oliver.upton@linux.dev>,
	Joey Gouly <joey.gouly@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	leo.yan@arm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	linux-doc@vger.kernel.org, kvmarm@lists.linux.dev
Subject: Re: [PATCH v3 07/10] perf: arm_spe: Add support for filtering on data source
Date: Thu, 17 Jul 2025 16:16:32 +0100	[thread overview]
Message-ID: <ca99af3b-e358-4c2b-8d62-0b6c29984391@linaro.org> (raw)
In-Reply-To: <aHkI5_IOV35L4YJa@willie-the-truck>



On 17/07/2025 3:29 pm, Will Deacon wrote:
> On Tue, Jul 15, 2025 at 02:04:18PM +0100, James Clark wrote:
>> On 14/07/2025 3:04 pm, Will Deacon wrote:
>>> On Thu, Jun 05, 2025 at 11:49:05AM +0100, James Clark wrote:
>>>> @@ -406,6 +416,9 @@ static u64 arm_spe_event_to_pmsfcr(struct perf_event *event)
>>>>    	if (ATTR_CFG_GET_FLD(attr, inv_event_filter))
>>>>    		reg |= PMSFCR_EL1_FnE;
>>>> +	if (ATTR_CFG_GET_FLD(attr, data_src_filter))
>>>> +		reg |= PMSFCR_EL1_FDS;
>>>
>>> Is the polarity correct here? The description of PMSDSFR_EL1.S<m> suggests
>>> that setting bits to 1 _excludes_ the FDS filtering.
>>>
>>
>> Setting filter bits to 1 means that samples matching are included. Setting
>> bits to 0 means that they are excluded. And PMSFCR_EL1.FDS enables filtering
>> as a whole, so if the user sets any filter bit to 1 we want to enable
>> filtering:
>>
>>    PMSDSFR_EL1.S<m>
>>
>>    0b0  If PMSFCR_EL1.FDS is 1, do not record load operations that have
>>         bits [5:0] of the Data Source packet set to <m>.
>>
>>    0b1  Load operations with Data Source <m> are unaffected by
>>         PMSFCR_EL1.FDS.
>>
>> I think it's all the right way around and it ends up being the same as the
>> other filters in SPE. Because we're using any bit being set to enable the
>> filtering, the only thing you can't do is enable filtering with a 0 filter,
>> but I didn't think that was useful. See the previous discussion on this
>> here:
>> https://lore.kernel.org/all/5752f039-51c1-4452-b5df-03ff06da7be3@linaro.org/
>>
>> Reading the "Data source filtering" section in the docs change at the end
>> might help too.
> 
> Sorry, but I still don't get it :/
> 
> afaict, if any of the bits in 'data_src_filter' are _zero_ then we
> should set PMSFCR_EL1.FDS. That also means that a mask of zero means all
> loads are filtered, which is what the architecture says and is what we
> should provide to userspace.
> 
> Will

We'd have to add another format flag to enable data source filtering 
then, because otherwise the default would be zero and people's samples 
would disappear.

But the only use cases I could think of were more like "I want to see 
samples from data source 1":

   -e arm_spe/data_src_filter=0x1/

Or "I want to see all data sources except 1":

   -e arm_spe/data_src_filter=0xfffffffe/

Filtering out all samples with any data source didn't seem to make sense 
to me, and I think you can already do that with the other filters 
(remove loads etc).

It would be a shame to be inconsistent and to add an enable flag just 
for that one case because the other filters in SPE are auto enabled for 
non-zero values. Although to be fair for PMSFCR.FT and others, zero 
filters are explicitly not allowed:

   If this field is set to 1 and the PMSFCR_EL1.{ST, LD, B} bits are all
   set to zero, it is CONSTRAINED UNPREDICTABLE whether no samples are
   recorded or the PE behaves as if PMSFCR_EL1.FT is set to 0

Seems like FDS doesn't end up as neat as the others, but IMO I can't see 
anyone needing a zero filter. I did discuss it with Leo and we decided 
that we could always add the enable flag at a later date if a use case 
turned up and it wouldn't be a breaking change.

But if you think it's there so it should be exposed I can add it.

James


  reply	other threads:[~2025-07-17 15:16 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-05 10:48 [PATCH v3 00/10] perf: arm_spe: Armv8.8 SPE features James Clark
2025-06-05 10:48 ` [PATCH v3 01/10] arm64: sysreg: Add new PMSFCR_EL1 fields and PMSDSFR_EL1 register James Clark
2025-06-12  6:44   ` Anshuman Khandual
2025-07-14 13:32   ` Will Deacon
2025-06-05 10:49 ` [PATCH v3 02/10] perf: arm_spe: Support FEAT_SPEv1p4 filters James Clark
2025-06-12  7:35   ` Anshuman Khandual
2025-06-12  8:42     ` James Clark
2025-07-14 13:26   ` Will Deacon
2025-07-15 11:23     ` James Clark
2025-06-05 10:49 ` [PATCH v3 03/10] perf: arm_spe: Add support for FEAT_SPE_EFT extended filtering James Clark
2025-07-14 13:46   ` Will Deacon
2025-07-15 12:39     ` James Clark
2025-06-05 10:49 ` [PATCH v3 04/10] arm64/boot: Enable EL2 requirements for SPE_FEAT_FDS James Clark
2025-07-14 13:54   ` Will Deacon
2025-07-15 12:48     ` James Clark
2025-07-15 12:57       ` Will Deacon
2025-07-15 13:10         ` James Clark
2025-07-15 13:28           ` James Clark
2025-07-17 11:52             ` Will Deacon
2025-06-05 10:49 ` [PATCH v3 05/10] KVM: arm64: Add trap configs for PMSDSFR_EL1 James Clark
2025-07-09  9:53   ` Joey Gouly
2025-06-05 10:49 ` [PATCH v3 06/10] perf: Add perf_event_attr::config4 James Clark
2025-06-30 15:35   ` Ian Rogers
2025-07-14 13:56   ` Will Deacon
2025-06-05 10:49 ` [PATCH v3 07/10] perf: arm_spe: Add support for filtering on data source James Clark
2025-07-14 14:04   ` Will Deacon
2025-07-15 13:04     ` James Clark
2025-07-17 14:29       ` Will Deacon
2025-07-17 15:16         ` James Clark [this message]
2025-07-17 15:27           ` Will Deacon
2025-07-17 16:42             ` James Clark
2025-06-05 10:49 ` [PATCH v3 08/10] tools headers UAPI: Sync linux/perf_event.h with the kernel sources James Clark
2025-06-30 15:36   ` Ian Rogers
2025-06-05 10:49 ` [PATCH v3 09/10] perf tools: Add support for perf_event_attr::config4 James Clark
2025-06-05 10:49 ` [PATCH v3 10/10] perf docs: arm-spe: Document new SPE filtering features James Clark
2025-06-30 15:38   ` Ian Rogers
2025-06-30 13:26 ` [PATCH v3 00/10] perf: arm_spe: Armv8.8 SPE features James Clark

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=ca99af3b-e358-4c2b-8d62-0b6c29984391@linaro.org \
    --to=james.clark@linaro.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=irogers@google.com \
    --cc=joey.gouly@arm.com \
    --cc=jolsa@kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=leo.yan@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=oliver.upton@linux.dev \
    --cc=peterz@infradead.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®