2023-11-03 00:17:41

by Ilkka Koskinen

[permalink] [raw]
Subject: [PATCH] perf: arm_cspmu: Reject events meant for other PMUs

Coresight PMU driver didn't reject events meant for other PMUs.
This caused some of the Core PMU events disappearing from
the output of "perf list". In addition, trying to run e.g.

$ perf stat -e r2 sleep 1

made Coresight PMU driver to handle the event instead of letting
Core PMU driver to deal with it.

Cc: [email protected]
Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver")
Signed-off-by: Ilkka Koskinen <[email protected]>
---
drivers/perf/arm_cspmu/arm_cspmu.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c
index 42b72042f6b3..2cc35dded007 100644
--- a/drivers/perf/arm_cspmu/arm_cspmu.c
+++ b/drivers/perf/arm_cspmu/arm_cspmu.c
@@ -676,6 +676,9 @@ static int arm_cspmu_event_init(struct perf_event *event)

cspmu = to_arm_cspmu(event->pmu);

+ if (event->attr.type != event->pmu->type)
+ return -ENOENT;
+
/*
* Following other "uncore" PMUs, we do not support sampling mode or
* attach to a task (per-process mode).
--
2.40.1


2023-11-03 02:14:40

by Besar Wicaksono

[permalink] [raw]
Subject: RE: [PATCH] perf: arm_cspmu: Reject events meant for other PMUs

Hi Ilkka,

Thanks for fixing it.

Reviewed-by: Besar Wicaksono <[email protected]>

Regards,
Besar

> -----Original Message-----
> From: Ilkka Koskinen <[email protected]>
> Sent: Thursday, November 2, 2023 7:17 PM
> To: Besar Wicaksono <[email protected]>; Suzuki K Poulose
> <[email protected]>; Robin Murphy <[email protected]>; Will
> Deacon <[email protected]>; Mark Rutland <[email protected]>; Raag
> Jadav <[email protected]>; Ilkka Koskinen
> <[email protected]>
> Cc: [email protected]; [email protected]
> Subject: [PATCH] perf: arm_cspmu: Reject events meant for other PMUs
>
> External email: Use caution opening links or attachments
>
>
> Coresight PMU driver didn't reject events meant for other PMUs.
> This caused some of the Core PMU events disappearing from
> the output of "perf list". In addition, trying to run e.g.
>
> $ perf stat -e r2 sleep 1
>
> made Coresight PMU driver to handle the event instead of letting
> Core PMU driver to deal with it.
>
> Cc: [email protected]
> Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight
> PMU driver")
> Signed-off-by: Ilkka Koskinen <[email protected]>
> ---
> drivers/perf/arm_cspmu/arm_cspmu.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c
> b/drivers/perf/arm_cspmu/arm_cspmu.c
> index 42b72042f6b3..2cc35dded007 100644
> --- a/drivers/perf/arm_cspmu/arm_cspmu.c
> +++ b/drivers/perf/arm_cspmu/arm_cspmu.c
> @@ -676,6 +676,9 @@ static int arm_cspmu_event_init(struct perf_event
> *event)
>
> cspmu = to_arm_cspmu(event->pmu);
>
> + if (event->attr.type != event->pmu->type)
> + return -ENOENT;
> +
> /*
> * Following other "uncore" PMUs, we do not support sampling mode or
> * attach to a task (per-process mode).
> --
> 2.40.1

2023-11-03 06:55:34

by Anshuman Khandual

[permalink] [raw]
Subject: Re: [PATCH] perf: arm_cspmu: Reject events meant for other PMUs



On 11/3/23 05:46, Ilkka Koskinen wrote:
> Coresight PMU driver didn't reject events meant for other PMUs.
> This caused some of the Core PMU events disappearing from
> the output of "perf list". In addition, trying to run e.g.
>
> $ perf stat -e r2 sleep 1
>
> made Coresight PMU driver to handle the event instead of letting
> Core PMU driver to deal with it.
>
> Cc: [email protected]
> Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver")
> Signed-off-by: Ilkka Koskinen <[email protected]>
> ---
> drivers/perf/arm_cspmu/arm_cspmu.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c
> index 42b72042f6b3..2cc35dded007 100644
> --- a/drivers/perf/arm_cspmu/arm_cspmu.c
> +++ b/drivers/perf/arm_cspmu/arm_cspmu.c
> @@ -676,6 +676,9 @@ static int arm_cspmu_event_init(struct perf_event *event)
>
> cspmu = to_arm_cspmu(event->pmu);
>
> + if (event->attr.type != event->pmu->type)
> + return -ENOENT;
> +
> /*
> * Following other "uncore" PMUs, we do not support sampling mode or
> * attach to a task (per-process mode).

LGTM

Reviewed-by: Anshuman Khandual <[email protected]>

2023-11-03 11:37:42

by Mark Rutland

[permalink] [raw]
Subject: Re: [PATCH] perf: arm_cspmu: Reject events meant for other PMUs

On Thu, Nov 02, 2023 at 05:16:54PM -0700, Ilkka Koskinen wrote:
> Coresight PMU driver didn't reject events meant for other PMUs.
> This caused some of the Core PMU events disappearing from
> the output of "perf list". In addition, trying to run e.g.
>
> $ perf stat -e r2 sleep 1
>
> made Coresight PMU driver to handle the event instead of letting
> Core PMU driver to deal with it.
>
> Cc: [email protected]
> Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver")
> Signed-off-by: Ilkka Koskinen <[email protected]>

Acked-by: Mark Rutland <[email protected]>

Will, are you happy to pick this up?

Mark.

> ---
> drivers/perf/arm_cspmu/arm_cspmu.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c
> index 42b72042f6b3..2cc35dded007 100644
> --- a/drivers/perf/arm_cspmu/arm_cspmu.c
> +++ b/drivers/perf/arm_cspmu/arm_cspmu.c
> @@ -676,6 +676,9 @@ static int arm_cspmu_event_init(struct perf_event *event)
>
> cspmu = to_arm_cspmu(event->pmu);
>
> + if (event->attr.type != event->pmu->type)
> + return -ENOENT;
> +
> /*
> * Following other "uncore" PMUs, we do not support sampling mode or
> * attach to a task (per-process mode).
> --
> 2.40.1
>