Re: perf usage of arch/arm64/include/asm/cputype.h

From: Leo Yan
Date: Mon Jun 16 2025 - 09:08:05 EST


On Mon, Jun 16, 2025 at 09:54:43AM +0000, Shameerali Kolothum Thodi wrote:

[...]

> > > -bool is_midr_in_range_list(struct midr_range const *ranges) -{
> > > - while (ranges->model)
> > > - if (is_midr_in_range(ranges++))
> > > - return true;
> > > return false;
> > > }

> > Looks ok to me.
> >
> > You could do it with slightly less churn on the kernel side if you keep the
> > function name and arguments the same there. There's only one usage in
> > Perf so that one could be renamed and have the midr argument added back
> > in.
>
> +1.
>
> Can we use a separate one for perf here, something like below(untested)?

Thanks for working on this. Agreed.

> --- a/tools/perf/util/arm-spe.c
> +++ b/tools/perf/util/arm-spe.c
> @@ -842,6 +842,18 @@ static void arm_spe__synth_memory_level(const
> struct arm_spe_record *record,
> data_src->mem_lvl |= PERF_MEM_LVL_REM_CCE1;
> }
>
> +static bool is_perf_midr_in_range_list(u32 midr, struct midr_range
> const *ranges)
> +{
> + while (ranges->model) {
> + if (midr_is_cpu_model_range(midr, ranges->model,
> + ranges->rv_min, ranges->rv_max)) {
> + return true;
> + }
> + ranges++;
> + }
> + return false;
> +}

Maybe we can make it more general. For example, move this function into
a common header such as tools/perf/arch/arm64/include/cputype.h. Then,
util/arm-spe.c can include this header.

Thanks,
Leo