mbox series

[v3,0/7] perf: cs-etm: Coresight decode and disassembly improvements

Message ID 20240916135743.1490403-1-james.clark@linaro.org (mailing list archive)
Headers show
Series perf: cs-etm: Coresight decode and disassembly improvements | expand

Message

James Clark Sept. 16, 2024, 1:57 p.m. UTC
A set of changes that came out of the issues reported here [1].

 * First 2 patches fix a decode bug in Perf and add support for new
   consistency checks in OpenCSD
 * The remaining ones make the disassembly script easier to test
   and use. This also involves adding a new Python binding to
   Perf to get a config value (perf_config_get())

[1]: https://lore.kernel.org/linux-arm-kernel/20240719092619.274730-1-gankulkarni@os.amperecomputing.com/

Changes since V2:
  * Check validity of start stop arguments
  * Make test work if Perf was installed
  * Document that start and stop time are monotonic clock values

Changes since V1:
  * Keep the flush function for discontinuities
  * Still remove the flush when the buffer fills, but now add
    cs_etm__end_block() for the end trace. That way we won't drop
    the last branch stack if the instruction sample period wasn't
    hit at the very end.

James Clark (7):
  perf cs-etm: Don't flush when packet_queue fills up
  perf cs-etm: Use new OpenCSD consistency checks
  perf scripting python: Add function to get a config value
  perf scripts python cs-etm: Update to use argparse
  perf scripts python cs-etm: Improve arguments
  perf scripts python cs-etm: Add start and stop arguments
  perf test: cs-etm: Test Coresight disassembly script

 .../perf/Documentation/perf-script-python.txt |   2 +-
 .../scripts/python/Perf-Trace-Util/Context.c  |  11 ++
 .../scripts/python/arm-cs-trace-disasm.py     | 127 ++++++++++++++----
 .../tests/shell/test_arm_coresight_disasm.sh  |  65 +++++++++
 tools/perf/util/config.c                      |  22 +++
 tools/perf/util/config.h                      |   1 +
 .../perf/util/cs-etm-decoder/cs-etm-decoder.c |   7 +-
 tools/perf/util/cs-etm.c                      |  25 +++-
 8 files changed, 225 insertions(+), 35 deletions(-)
 create mode 100755 tools/perf/tests/shell/test_arm_coresight_disasm.sh

Comments

Ganapatrao Kulkarni Sept. 18, 2024, 11:23 a.m. UTC | #1
Hi James,

On 16-09-2024 07:27 pm, James Clark wrote:
> A set of changes that came out of the issues reported here [1].
> 
>   * First 2 patches fix a decode bug in Perf and add support for new
>     consistency checks in OpenCSD
>   * The remaining ones make the disassembly script easier to test
>     and use. This also involves adding a new Python binding to
>     Perf to get a config value (perf_config_get())
> 
> [1]: https://lore.kernel.org/linux-arm-kernel/20240719092619.274730-1-gankulkarni@os.amperecomputing.com/
> 

Tried this series with below commands and issue is not seen as reported 
in [1].

record:
timeout 8s ./perf record -e cs_etm// -C 1 -o kcore --kcore dd 
if=/dev/zero of=/dev/null

decode:
./perf script -i ./kcore -s scripts/python/arm-cs-trace-disasm.py -- -d 
objdump -k kcore/kcore_dir/kcore

./perf script -i ./kcore -s scripts/python/arm-cs-trace-disasm.py -F 
cpu,event,ip,addr,sym -- -d objdump -k kcore/kcore_dir/kcore

Feel free to add for 1/7 and 2/7.
Tested-by: Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com>

> Changes since V2:
>    * Check validity of start stop arguments
>    * Make test work if Perf was installed
>    * Document that start and stop time are monotonic clock values
> 
> Changes since V1:
>    * Keep the flush function for discontinuities
>    * Still remove the flush when the buffer fills, but now add
>      cs_etm__end_block() for the end trace. That way we won't drop
>      the last branch stack if the instruction sample period wasn't
>      hit at the very end.
> 
> James Clark (7):
>    perf cs-etm: Don't flush when packet_queue fills up
>    perf cs-etm: Use new OpenCSD consistency checks
>    perf scripting python: Add function to get a config value
>    perf scripts python cs-etm: Update to use argparse
>    perf scripts python cs-etm: Improve arguments
>    perf scripts python cs-etm: Add start and stop arguments
>    perf test: cs-etm: Test Coresight disassembly script
> 
>   .../perf/Documentation/perf-script-python.txt |   2 +-
>   .../scripts/python/Perf-Trace-Util/Context.c  |  11 ++
>   .../scripts/python/arm-cs-trace-disasm.py     | 127 ++++++++++++++----
>   .../tests/shell/test_arm_coresight_disasm.sh  |  65 +++++++++
>   tools/perf/util/config.c                      |  22 +++
>   tools/perf/util/config.h                      |   1 +
>   .../perf/util/cs-etm-decoder/cs-etm-decoder.c |   7 +-
>   tools/perf/util/cs-etm.c                      |  25 +++-
>   8 files changed, 225 insertions(+), 35 deletions(-)
>   create mode 100755 tools/perf/tests/shell/test_arm_coresight_disasm.sh
>
James Clark Sept. 20, 2024, 8:14 a.m. UTC | #2
On 18/09/2024 12:23 pm, Ganapatrao Kulkarni wrote:
> 
> Hi James,
> 
> On 16-09-2024 07:27 pm, James Clark wrote:
>> A set of changes that came out of the issues reported here [1].
>>
>>   * First 2 patches fix a decode bug in Perf and add support for new
>>     consistency checks in OpenCSD
>>   * The remaining ones make the disassembly script easier to test
>>     and use. This also involves adding a new Python binding to
>>     Perf to get a config value (perf_config_get())
>>
>> [1]: 
>> https://lore.kernel.org/linux-arm-kernel/20240719092619.274730-1-gankulkarni@os.amperecomputing.com/
>>
> 
> Tried this series with below commands and issue is not seen as reported 
> in [1].
> 
> record:
> timeout 8s ./perf record -e cs_etm// -C 1 -o kcore --kcore dd 
> if=/dev/zero of=/dev/null
> 
> decode:
> ./perf script -i ./kcore -s scripts/python/arm-cs-trace-disasm.py -- -d 
> objdump -k kcore/kcore_dir/kcore
> 
> ./perf script -i ./kcore -s scripts/python/arm-cs-trace-disasm.py -F 
> cpu,event,ip,addr,sym -- -d objdump -k kcore/kcore_dir/kcore
> 
> Feel free to add for 1/7 and 2/7.
> Tested-by: Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com>
> 

Thanks for testing!
Namhyung Kim Sept. 25, 2024, 10:40 p.m. UTC | #3
On Mon, 16 Sep 2024 14:57:31 +0100, James Clark wrote:

> A set of changes that came out of the issues reported here [1].
> 
>  * First 2 patches fix a decode bug in Perf and add support for new
>    consistency checks in OpenCSD
>  * The remaining ones make the disassembly script easier to test
>    and use. This also involves adding a new Python binding to
>    Perf to get a config value (perf_config_get())
> 
> [...]

Applied to perf-tools-next, thanks!

Best regards,
Namhyung