Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 24 Jul 2023 15:40:12 +0800 | Subject | Re: [PATCH] perf arm64: Fix read PMU cpu slots | From | Jing Zhang <> |
| |
在 2023/7/24 下午1:06, Haixin Yu 写道: > Commit f8ad6018ce3c ("perf pmu: Remove duplication around > EVENT_SOURCE_DEVICE_PATH") uses sysfs__read_ull to read a full > sysfs path, which will never success. Fix it by read file directly. > > Signed-off-by: Haixin Yu <yuhaixin.yhx@linux.alibaba.com> > --- > tools/perf/arch/arm64/util/pmu.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/tools/perf/arch/arm64/util/pmu.c b/tools/perf/arch/arm64/util/pmu.c > index 561de0cb6b95..512a8f13c4de 100644 > --- a/tools/perf/arch/arm64/util/pmu.c > +++ b/tools/perf/arch/arm64/util/pmu.c > @@ -54,10 +54,11 @@ double perf_pmu__cpu_slots_per_cycle(void) > perf_pmu__pathname_scnprintf(path, sizeof(path), > pmu->name, "caps/slots"); > /* > - * The value of slots is not greater than 32 bits, but sysfs__read_int > - * can't read value with 0x prefix, so use sysfs__read_ull instead. > + * The value of slots is not greater than 32 bits, but > + * filename__read_int can't read value with 0x prefix, > + * so use filename__read_ull instead. > */ > - sysfs__read_ull(path, &slots); > + filename__read_ull(path, &slots); > } > > return slots ? (double)slots : NAN;
Yes, the function perf_pmu__pathname_scnprintf returns the complete slots file path "/sys/bus/xxxxx/caps/slots", and sysfs__read_ull will add the prefix "/sys" to the path, so the final file path becomes "/sys/sys/bus/xxxx/caps/slots" which does not exist, and the slots file cannot be successfully read, so sysfs__read_ull needs to be changed to the filename__read_ull.
I tested it and it works well.
Tested-by: Jing Zhang <renyu.zj@linux.alibaba.com>
| ![\](/images/icornerr.gif) |