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

From: Xu Yang
Date: Thu Feb 29 2024 - 05:29:59 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;'

Okay.

Thanks,
Xu Yang

>
> Will