Re: [PATCH v4 0/6] Perf tool: Support TSC for Arm64

From: Leo Yan
Date: Tue Sep 22 2020 - 08:07:48 EST


Hi Arnaldo,

On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote:
> This patch set is to refactor TSC implementation and move TSC code from
> x86 folder to util/tsc.c, this allows all archs to reuse the code. And
> alse move the TSC testing from x86 folder to tests so can work as a
> common testing.
>
> So far, for x86 it needs to support cap_user_time_zero and for Arm64
> it needs to support cap_user_time_short. For architecture specific
> code, every arch only needs to implement its own rdtsc() to read out
> timer's counter.
>
> This patch set has been rebased on the perf/core branch with latest
> commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level
> metric events") and tested on Arm64 DB410c.

Could you pick up this patch set? Thanks!

Leo

> $ perf test list
> [...]
> 68: Convert perf time to TSC
> [...]
>
> $ perf test 68 -v
> 68: Convert perf time to TSC
> --- start ---
> test child forked, pid 10961
> mmap size 528384B
> 1st event perf time 35715036563417 tsc 686221770989
> rdtsc time 35715036649719 tsc 686221772647
> 2nd event perf time 35715036660448 tsc 686221772852
> test child finished with 0
> ---- end ----
> Convert perf time to TSC: Ok
>
> Changes from v3:
> * Added comments for Arm64's rdtsc() for short counter (PeterZ);
> * Rebased on latest acme/perf/core branch.
>
> Changes from v2:
> * Refactored patch set to move TSC common code to util/tsc.c (Wei/Al);
> * Moved TSC testing to perf/tests (Wei);
> * Dropped Arm SPE timestamp patch so can have clear purpose and easier
> reviewing; will send Arm SPE timestamp as separate patch.
>
>
> Leo Yan (6):
> perf tsc: Move out common functions from x86
> perf tsc: Add rdtsc() for Arm64
> perf tsc: Calculate timestamp with cap_user_time_short
> perf tsc: Support cap_user_time_short for event TIME_CONV
> perf tests tsc: Make tsc testing as a common testing
> perf tests tsc: Add checking helper is_supported()
>
> tools/lib/perf/include/perf/event.h | 4 +
> tools/perf/arch/arm64/util/Build | 1 +
> tools/perf/arch/arm64/util/tsc.c | 21 +++++
> tools/perf/arch/x86/include/arch-tests.h | 1 -
> tools/perf/arch/x86/tests/Build | 1 -
> tools/perf/arch/x86/tests/arch-tests.c | 4 -
> tools/perf/arch/x86/util/tsc.c | 73 +----------------
> tools/perf/tests/Build | 1 +
> tools/perf/tests/builtin-test.c | 5 ++
> .../{arch/x86 => }/tests/perf-time-to-tsc.c | 13 +++
> tools/perf/tests/tests.h | 2 +
> tools/perf/util/jitdump.c | 14 ++--
> tools/perf/util/synthetic-events.c | 8 --
> tools/perf/util/tsc.c | 81 +++++++++++++++++++
> tools/perf/util/tsc.h | 5 ++
> 15 files changed, 143 insertions(+), 91 deletions(-)
> create mode 100644 tools/perf/arch/arm64/util/tsc.c
> rename tools/perf/{arch/x86 => }/tests/perf-time-to-tsc.c (93%)
>
> --
> 2.17.1
>