Re: [PATCH v2] perf/hx_arm_ni: Support uncore ARM NI-700 PMU

From: Yang Jialong 杨佳龙
Date: Wed Feb 28 2024 - 21:23:46 EST




在 2024/2/3 4:11, Robin Murphy 写道:
On 2024-02-01 2:40 am, Yang Jialong 杨佳龙 wrote:


在 2024/2/1 0:50, Robin Murphy 写道:
On 31/01/2024 7:08 am, JiaLong.Yang wrote:
This code is based on uncore PMUs arm_smmuv3_pmu and arm-cmn.
One ni-700 can have many clock domains. Each of them has only one PMU.
Here one PMU corresponds to one 'struct ni_pmu' instance.
PMU name will be ni_pmu_N_M, which N means different NI-700s and M means
different PMU in one NI-700. If only one NI-700 found in NI-700, name will
be ni_pmu_N.
Node interface event name will be xxni_N_eventname, such as
asni_0_rdreq_any. There are many kinds of type of nodes in one clock
domain. Also means that there are many kinds of that in one PMU. So we
distinguish them by xxni string. Besides, maybe there are many nodes
have same type. So we have number N in event name.
By ni_pmu_0_0/asni_0_rdreq_any/, we can pinpoint accurate bus traffic.
Example1: perf stat -a -e ni_pmu_0_0/asni_0_rdreq_any/,ni_pmu_0_0/cycles/
EXample2: perf stat -a -e ni_pmu_0_0/asni,id=0,event=0x0/

Oh! I've had a driver for this thing sat around for ages waiting to find someone with an interest in testing it. Given that from a quick skim of this patch I'd also have several concerns with this implementation, may I ask that you have a look at my branch and see if it works for you?

If permission I will test.

Thanks! I see you've also tried to support having the IRQs combined together - does your platform need that right away? That's another thing I've been anticipating but haven't got round to wiring up yet (it's a bit more fiddly than just IRQF_SHARED since perf has some expectations around affinity to event->cpu), but I can have a go at getting it done.


I have not seen the expectations. I will study it.


https://gitlab.arm.com/linux-arm/linux-rm/-/tree/ni-dev?ref_type=heads

In particular, after the pain of maintaining event aliases in arm-cmn I'd really like to get away from doing that again and instead move over to jevents this time (especially now that system PMU support is a bit more developed there) - I just haven't yet got round to hooking up the identifier and writing the JSON files, since it hasn't seemed like much of a priority before I know whether the code even works.


It's a useful way.
Uncore PMU is increasing. Not only CPU event can be writen in jevents.
I have not considered it when writing code in a low version.

Finally, I have opened a case in arm suppport for linux ni pmu driver.
They tell me no driver.

Oh dear, sorry about that - I'd have hoped that a question about a Linux PMU driver might have found its way to our team, even if they weren't aware that NI-700 has already been a specific item on our roadmap for some time :(

Thanks,
Robin.


I have run the code and thanks to the support of shenghui.qu@xxxxxxxxxxxx.
It's sorry for the late.