Re: [PATCH v4 5/6] perf: imx_perf: limit counter ID from user space and optimize counter usage

From: Will Deacon
Date: Thu Feb 22 2024 - 07:25:04 EST


On Wed, Jan 31, 2024 at 01:58:10PM +0800, Xu Yang wrote:
> The user can pass any counter ID to perf app. However, current pmu driver
> doesn't judge the validity of the counter ID. This will add necessary
> check for counter ID from user space. Besides, this pmu has 10 counters
> except cycle counter which can be used to count reference events and
> counter specific evnets. This will also add supports to auto allocate
> counter if the user doesn't pass it the perf. Then, the usage of counter
> will be optimized.
>
> Signed-off-by: Xu Yang <xu.yang_2@xxxxxxx>
>
> ---
> Changes in v2:
> - limit counter ID from user to 0-10
> - combine dynamic and static allocation of counter
> Changes in v3:
> - no changes
> Changes in v4:
> - rename ddr_perf_is_specific_event()
> - use macro definitions to parse config attr
> ---
> drivers/perf/fsl_imx9_ddr_perf.c | 72 +++++++++++++++++++++++++++++++-
> 1 file changed, 71 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/perf/fsl_imx9_ddr_perf.c b/drivers/perf/fsl_imx9_ddr_perf.c
> index 94041f06c152..e71496809c52 100644
> --- a/drivers/perf/fsl_imx9_ddr_perf.c
> +++ b/drivers/perf/fsl_imx9_ddr_perf.c
> @@ -51,6 +51,7 @@
>
> #define NUM_COUNTERS 11
> #define CYCLES_COUNTER 0
> +#define CYCLES_EVENT_ID 0
>
> #define CONFIG_EVENT_MASK 0x00FF
> #define CONFIG_EVENT_OFFSET 0
> @@ -240,6 +241,19 @@ static struct attribute *ddr_perf_events_attrs[] = {
> NULL,
> };
>
> +/*
> + * An event is either reference evnet or counter specific event.
> + * For counter specific event, the event count will only be incremented
> + * on the corresponding counter.
> + */
> +static bool ddr_perf_is_counter_specific_event(int event)
> +{
> + if (event >= 64 && event <= 73)
> + return true;
> + else
> + return false;

Just collapse this to 'return event >= 64 && event <= 73;'

Will