[PATCH v1 0/2] perf arm64: Support SDT

Masami Hiramatsu mhiramat at kernel.org
Thu Dec 24 03:13:33 EST 2020


Hi Leo,

On Wed, 23 Dec 2020 14:39:03 +0800
Leo Yan <leo.yan at linaro.org> wrote:

> This patch is to enable SDT on Arm64.
> 
> Since Arm64 SDT marker in ELF file is different from other archs,
> especially for using stack pointer (sp) to retrieve data for local
> variables, patch 01 is used to fixup the arguments for this special
> case.  Patch 02 is to add argument support for Arm64 SDT.

Both patches look good to me.

Acked-by: Masami Hiramatsu <mhiramat at kernel.org> for the seires.

Thank you!

> 
> This patch set has been verified on Arm64/x86_64 platforms with a
> testing program usdt_test [1].  The program run the SDT interfaces
> one by one for DTRACE_PROBE, DTRACE_PROBE1, ..., DTRACE_PROBE12, so
> it tries to verify probe with different count of arguments (the
> arguments count is 0 to 12).
> 
> The testing flow and result are shown as below:
> 
>   # perf buildid-cache --add /root/test/usdt_test
>   # perf probe sdt_usdt:test_probe
>   # perf probe sdt_usdt:test_probe_param1
>   # perf probe sdt_usdt:test_probe_param1x
>   # perf probe sdt_usdt:test_probe_param2
>   # perf probe sdt_usdt:test_probe_param2x
>   # perf probe sdt_usdt:test_probe_param3
>   # perf probe sdt_usdt:test_probe_param3x
>   # perf probe sdt_usdt:test_probe_param4
>   # perf probe sdt_usdt:test_probe_param4x
>   # perf probe sdt_usdt:test_probe_param5
>   # perf probe sdt_usdt:test_probe_param5x
>   # perf probe sdt_usdt:test_probe_param6
>   # perf probe sdt_usdt:test_probe_param6x
>   # perf probe sdt_usdt:test_probe_param7
>   # perf probe sdt_usdt:test_probe_param7x
>   # perf probe sdt_usdt:test_probe_param8
>   # perf probe sdt_usdt:test_probe_param8x
>   # perf probe sdt_usdt:test_probe_param9
>   # perf probe sdt_usdt:test_probe_param9x
>   # perf probe sdt_usdt:test_probe_param10
>   # perf probe sdt_usdt:test_probe_param10x
>   # perf probe sdt_usdt:test_probe_param11
>   # perf probe sdt_usdt:test_probe_param11x
>   # perf probe sdt_usdt:test_probe_param12
>   # perf probe sdt_usdt:test_probe_param12x
> 
>   # perf record \
>         -e sdt_usdt:test_probe_param1 -e sdt_usdt:test_probe_param1x \
>         -e sdt_usdt:test_probe_param2 -e sdt_usdt:test_probe_param2x \
>         -e sdt_usdt:test_probe_param3 -e sdt_usdt:test_probe_param3x \
>         -e sdt_usdt:test_probe_param4 -e sdt_usdt:test_probe_param4x \
>         -e sdt_usdt:test_probe_param5 -e sdt_usdt:test_probe_param5x \
>         -e sdt_usdt:test_probe_param6 -e sdt_usdt:test_probe_param6x \
>         -e sdt_usdt:test_probe_param7 -e sdt_usdt:test_probe_param7x \
>         -e sdt_usdt:test_probe_param8 -e sdt_usdt:test_probe_param8x \
>         -e sdt_usdt:test_probe_param9 -e sdt_usdt:test_probe_param9x \
>         -e sdt_usdt:test_probe_param10 -e sdt_usdt:test_probe_param10x \
>         -e sdt_usdt:test_probe_param11 -e sdt_usdt:test_probe_param11x \
>         -e sdt_usdt:test_probe_param12 -e sdt_usdt:test_probe_param12x \
>         -e sdt_usdt:test_probe  -aR sleep 5
> 
>    # ./usdt_test   => Execute in another terminal
> 
>    # perf script
> 
>        usdt_test  7999 [003] 80493.418276:          sdt_usdt:test_probe: (aaaab0d80714)
>        usdt_test  7999 [003] 80493.418352:   sdt_usdt:test_probe_param1: (aaaab0d80728) arg1=1
>        usdt_test  7999 [003] 80493.418379:   sdt_usdt:test_probe_param2: (aaaab0d80744) arg1=1 arg2=2
>        usdt_test  7999 [003] 80493.418405:   sdt_usdt:test_probe_param3: (aaaab0d80764) arg1=1 arg2=2 arg3=3
>        usdt_test  7999 [003] 80493.418432:   sdt_usdt:test_probe_param4: (aaaab0d80788) arg1=1 arg2=2 arg3=3 arg4=4
>        usdt_test  7999 [003] 80493.418459:   sdt_usdt:test_probe_param5: (aaaab0d807b0) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5
>        usdt_test  7999 [003] 80493.418487:   sdt_usdt:test_probe_param6: (aaaab0d807dc) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6
>        usdt_test  7999 [003] 80493.418516:   sdt_usdt:test_probe_param7: (aaaab0d8080c) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7
>        usdt_test  7999 [003] 80493.418545:   sdt_usdt:test_probe_param8: (aaaab0d80840) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8
>        usdt_test  7999 [003] 80493.418574:   sdt_usdt:test_probe_param9: (aaaab0d80874) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9
>        usdt_test  7999 [003] 80493.418603:  sdt_usdt:test_probe_param10: (aaaab0d808a8) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9 arg10=10
>        usdt_test  7999 [003] 80493.418632:  sdt_usdt:test_probe_param11: (aaaab0d808dc) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9 arg10=10 arg11=11
>        usdt_test  7999 [003] 80493.418662:  sdt_usdt:test_probe_param12: (aaaab0d80910) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9 arg10=10 arg11=11 arg12=12
>        usdt_test  7999 [003] 80493.418687:  sdt_usdt:test_probe_param1x: (aaaab0d8092c) arg1=1
>        usdt_test  7999 [003] 80493.418713:  sdt_usdt:test_probe_param2x: (aaaab0d80950) arg1=1 arg2=2
>        usdt_test  7999 [003] 80493.418739:  sdt_usdt:test_probe_param3x: (aaaab0d8097c) arg1=1 arg2=2 arg3=3
>        usdt_test  7999 [003] 80493.418766:  sdt_usdt:test_probe_param4x: (aaaab0d809b0) arg1=1 arg2=2 arg3=3 arg4=4
>        usdt_test  7999 [003] 80493.418792:  sdt_usdt:test_probe_param5x: (aaaab0d809ec) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5
>        usdt_test  7999 [003] 80493.418820:  sdt_usdt:test_probe_param6x: (aaaab0d80a30) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6
>        usdt_test  7999 [003] 80493.418847:  sdt_usdt:test_probe_param7x: (aaaab0d80a7c) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7
>        usdt_test  7999 [003] 80493.418875:  sdt_usdt:test_probe_param8x: (aaaab0d80ad0) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8
>        usdt_test  7999 [003] 80493.418904:  sdt_usdt:test_probe_param9x: (aaaab0d80b2c) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9
>        usdt_test  7999 [003] 80493.418933: sdt_usdt:test_probe_param10x: (aaaab0d80b90) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9 arg10=10
>        usdt_test  7999 [003] 80493.418962: sdt_usdt:test_probe_param11x: (aaaab0d80bfc) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=9 arg10=10 arg11=11
>        usdt_test  7999 [003] 80493.418991: sdt_usdt:test_probe_param12x: (aaaab0d80cb0) arg1=1 arg2=2 arg3=3 arg4=4 arg5=5 arg6=6 arg7=7 arg8=8 arg9=281474762776336 arg10=281474762776340 arg11=281474762776344 arg12=281474762776348
> 
> [1] https://people.linaro.org/~leo.yan/debug/perf/usdt_test.c
> 
> 
> Leo Yan (2):
>   perf probe: Fixup Arm64 SDT arguments
>   perf arm64: Add argument support for SDT
> 
>  tools/perf/arch/arm64/util/perf_regs.c | 94 ++++++++++++++++++++++++++
>  tools/perf/util/probe-file.c           | 32 ++++++++-
>  2 files changed, 124 insertions(+), 2 deletions(-)
> 
> -- 
> 2.17.1
> 


-- 
Masami Hiramatsu <mhiramat at kernel.org>



More information about the linux-arm-kernel mailing list