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