mbox series

[v2,0/6] coresight: Add config flag to enable branch broadcast

Message ID 20220113091056.1297982-1-james.clark@arm.com (mailing list archive)
Headers show
Series coresight: Add config flag to enable branch broadcast | expand

Message

James Clark Jan. 13, 2022, 9:10 a.m. UTC
This allows enabling branch broadcast for Perf hosted sessions (the option
is currently only available for the sysfs interface). Hopefully this could
be useful for testing the decode in perf, for example does a determinisitic
run with branch broadcast enabled look the same as with it disabled? It
could also be used for scenarios like OpenJ9's support for JIT code:

  java -Xjit:perfTool hello.java

Currently this is not working and you get the usual errors of a missing
DSO, but branch broadcast would have to be enabled anyway before working
through this next issue:

  CS ETM Trace: Debug data not found for address 0xffff7b94b058 in /tmp/perf-29360.map

Address range support in Perf for branch broadcast has also not been added
here, but could be added later.

The documentation has been refactored slightly to allow updates to be made
that link the Perf format arguments with the existing documentation.

For Suzuki's comment, I will do it as a separate change that converts all
the other hard coded values to a more consistent sysreg.h style:

  nit: While at this, please could you change the hard coded value
  to ETM4_CFG_BIT_RETSTK ? 

Changes since v1:

  * Added Leo's reviewed by on patch 3
  * Fix bracket styling
  * Add documentation

Applies on top of coresight/next efa56eddf5d5c. But this docs fix is also
required to get the links to work:
  https://marc.info/?l=linux-doc&m=164139331923986&w=2

Also available at: https://gitlab.arm.com/linux-arm/linux-jc/-/tree/james-branch-broadcast-v2

James Clark (6):
  coresight: Add config flag to enable branch broadcast
  coresight: Fail to open with return stacks if they are unavailable
  perf cs-etm: Update deduction of TRCCONFIGR register for branch
    broadcast
  Documentation: coresight: Turn numbered subsections into real
    subsections
  Documentation: coresight: Link config options to existing
    documentation
  Documentation: coresight: Expand branch broadcast documentation

 .../coresight/coresight-etm4x-reference.rst   | 14 ++++-
 Documentation/trace/coresight/coresight.rst   | 56 +++++++++++++++++--
 .../hwtracing/coresight/coresight-etm-perf.c  |  2 +
 .../coresight/coresight-etm4x-core.c          | 23 ++++++--
 include/linux/coresight-pmu.h                 |  2 +
 tools/include/linux/coresight-pmu.h           |  2 +
 tools/perf/arch/arm/util/cs-etm.c             |  3 +
 7 files changed, 92 insertions(+), 10 deletions(-)

Comments

Mathieu Poirier Jan. 27, 2022, 8:26 p.m. UTC | #1
Hi James,

I am seriously back-logged in my patch reviews and as such will not be
able to get to your work in the usual 14 days.  At this time and if
everything goes well, I should be able to start reviewing this
patchset during the week of February 7th.

Thanks,
Mathieu

On Thu, 13 Jan 2022 at 02:11, James Clark <james.clark@arm.com> wrote:
>
> This allows enabling branch broadcast for Perf hosted sessions (the option
> is currently only available for the sysfs interface). Hopefully this could
> be useful for testing the decode in perf, for example does a determinisitic
> run with branch broadcast enabled look the same as with it disabled? It
> could also be used for scenarios like OpenJ9's support for JIT code:
>
>   java -Xjit:perfTool hello.java
>
> Currently this is not working and you get the usual errors of a missing
> DSO, but branch broadcast would have to be enabled anyway before working
> through this next issue:
>
>   CS ETM Trace: Debug data not found for address 0xffff7b94b058 in /tmp/perf-29360.map
>
> Address range support in Perf for branch broadcast has also not been added
> here, but could be added later.
>
> The documentation has been refactored slightly to allow updates to be made
> that link the Perf format arguments with the existing documentation.
>
> For Suzuki's comment, I will do it as a separate change that converts all
> the other hard coded values to a more consistent sysreg.h style:
>
>   nit: While at this, please could you change the hard coded value
>   to ETM4_CFG_BIT_RETSTK ?
>
> Changes since v1:
>
>   * Added Leo's reviewed by on patch 3
>   * Fix bracket styling
>   * Add documentation
>
> Applies on top of coresight/next efa56eddf5d5c. But this docs fix is also
> required to get the links to work:
>   https://marc.info/?l=linux-doc&m=164139331923986&w=2
>
> Also available at: https://gitlab.arm.com/linux-arm/linux-jc/-/tree/james-branch-broadcast-v2
>
> James Clark (6):
>   coresight: Add config flag to enable branch broadcast
>   coresight: Fail to open with return stacks if they are unavailable
>   perf cs-etm: Update deduction of TRCCONFIGR register for branch
>     broadcast
>   Documentation: coresight: Turn numbered subsections into real
>     subsections
>   Documentation: coresight: Link config options to existing
>     documentation
>   Documentation: coresight: Expand branch broadcast documentation
>
>  .../coresight/coresight-etm4x-reference.rst   | 14 ++++-
>  Documentation/trace/coresight/coresight.rst   | 56 +++++++++++++++++--
>  .../hwtracing/coresight/coresight-etm-perf.c  |  2 +
>  .../coresight/coresight-etm4x-core.c          | 23 ++++++--
>  include/linux/coresight-pmu.h                 |  2 +
>  tools/include/linux/coresight-pmu.h           |  2 +
>  tools/perf/arch/arm/util/cs-etm.c             |  3 +
>  7 files changed, 92 insertions(+), 10 deletions(-)
>
> --
> 2.28.0
>