mbox series

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

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

Message

James Clark Sept. 12, 2024, 3:11 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 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     | 109 +++++++++++++-----
 .../tests/shell/test_arm_coresight_disasm.sh  |  63 ++++++++++
 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, 205 insertions(+), 35 deletions(-)
 create mode 100755 tools/perf/tests/shell/test_arm_coresight_disasm.sh

Comments

Arnaldo Carvalho de Melo Sept. 12, 2024, 7:23 p.m. UTC | #1
On Thu, Sep 12, 2024 at 04:11:31PM +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())
> 
> [1]: https://lore.kernel.org/linux-arm-kernel/20240719092619.274730-1-gankulkarni@os.amperecomputing.com/

Looks ok from a quick look, but I can't test it, so since there are
reporters for problems that are being fixed, it would be great to have a
Tested-by: from the reporters and probably from someone with access to
the hardware where this can be tested.

- Arnaldo
 
> 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     | 109 +++++++++++++-----
>  .../tests/shell/test_arm_coresight_disasm.sh  |  63 ++++++++++
>  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, 205 insertions(+), 35 deletions(-)
>  create mode 100755 tools/perf/tests/shell/test_arm_coresight_disasm.sh
> 
> -- 
> 2.34.1
James Clark Sept. 17, 2024, 8:15 a.m. UTC | #2
On 12/09/2024 20:23, Arnaldo Carvalho de Melo wrote:
> On Thu, Sep 12, 2024 at 04:11:31PM +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())
>>
>> [1]: https://lore.kernel.org/linux-arm-kernel/20240719092619.274730-1-gankulkarni@os.amperecomputing.com/
> 
> Looks ok from a quick look, but I can't test it, so since there are
> reporters for problems that are being fixed, it would be great to have a
> Tested-by: from the reporters and probably from someone with access to
> the hardware where this can be tested.
> 
> - Arnaldo
>   

I pinged Ganapat, hopefully he has some time to test it. But we can wait 
a bit and maybe find someone else if not.