Message ID | 1544513908-16805-1-git-send-email-leo.yan@linaro.org |
---|---|
Headers | show |
Series | perf cs-etm: Correct packets handling | expand |
On Tue, 11 Dec 2018 at 00:40, Leo Yan <leo.yan@linaro.org> wrote: > > perf cs-etm module converts decoder elements to packets and then we have > more context crossing packets to generate synthenize samples, finally > perf tool can faciliate samples for statistics and report the results. > > This patch series is to address several issues found related with > packets handling and samples generation when worked firstly on branch > sample flags support for Arm CoreSight trace data, so this patch series > is dependency for sample flags setting, will send another dedicated > patch series for sample flags later. > > In this patch series, the first two patches are mainly to fix issues in > cs_etm__flush(): patch 0001 corrects packets swapping in cs_etm__flush() > and this can fix the wrong branch sample caused by the missed packets > swapping; patch 0002 is to fix the wrong samples generation with stale > packets at the end of trace block. > > Patch 0003 and 0004 are for minor fixing; patch 0003 removes unused field > 'cs_etm_decoder::trace_on', this can simplize the switch-case code for all > discontinuity packet generation by using one code block; patch 0004 is to > refactor enumeration cs_etm_sample_type. > > Patch 0005 is to rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY, we use > a more general packet type to present trace discontinuity, so it can be > used by TRACE_ON event, and also can be used by NO_SYNC and EO_TRACE > elements. > > Patch 0006 is used to support NO_SYNC packet, otherwise the trace > decoding cannot reflect the tracing discontinuity caused by NO_SYNC > packet. > > Patch 0007 is used to support EO_TRACE packet, which also introduces > the tracing discontinuity at the end of trace and we should save last > trace data for it. > > Patch 0008 is used to generate branch sample for exception packets. > > Credit to Mike Leach and Robert Walker who made me clear for underlying > mechanism for NO_SYNC/EO_TRACE elements, Mike also shared the detailed > explanation for why we can treat NO_SYNC and TRACE_ON elements as the > same, so except following Mike & Rob suggestion for trace discontinuity > consolidation, most commit log of patches 0006/0007 also come from > Mike's explanation. > > This patch series is applied directly on the acme's perf/core branch [1] > with latest commit aaab25f03e9e ("perf trace: Allow selecting use the > use of the ordered_events code"). > > With applying the dependency patch, this patch series has been tested > for branch samples dumping with below command on Juno board: > > # perf script -F,-time,+ip,+sym,+dso,+addr,+symoff -k vmlinux Good day Arnaldo, I have reviewed all the changes in this set - please consider adding to your next branch. Let me know if you want a pull request. Regards, Mathieu > > Changes from v2: > * Addressed Mathieu's comments and suggestions for minor refactoring > for removing unused field 'cs_etm_decoder::trace_on' and added one > dedicated patch to refactor enumeration cs_etm_sample_type. > * Added Mathieu's 'reviewed' tags; Very appreciate Mathieu's many > suggestion for crossing several patch series. > > Changes from v1: > * Synced the consistent code in patch 0001 for condition checking. > * Introduced new function cs_etm__end_block() for flushing packet > at the end of trace block. > * Added new patch 0003 to rename CS_ETM_TRACE_ON to > CS_ETM_DISCONTINUITY. > * Used the same one packet type CS_ETM_DISCONTINUITY for all > trace discontinuity (include support TRACE_ON/EO_TRACE/NO_SYNC > packets). > * Removed tracking exception number patch, which will be added in > sample flag patch series. > > > Leo Yan (8): > perf cs-etm: Correct packets swapping in cs_etm__flush() > perf cs-etm: Avoid stale branch samples when flush packet > perf cs-etm: Remove unused 'trace_on' in cs_etm_decoder > perf cs-etm: Refactor enumeration cs_etm_sample_type > perf cs-etm: Rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY > perf cs-etm: Treat NO_SYNC element as trace discontinuity > perf cs-etm: Treat EO_TRACE element as trace discontinuity > perf cs-etm: Generate branch sample for exception packet > > tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 42 +++++++++----- > tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 10 ++-- > tools/perf/util/cs-etm.c | 77 ++++++++++++++++++++++--- > 3 files changed, 100 insertions(+), 29 deletions(-) > > -- > 2.7.4 >
Em Wed, Dec 12, 2018 at 11:45:44AM -0700, Mathieu Poirier escreveu: > On Tue, 11 Dec 2018 at 00:40, Leo Yan <leo.yan@linaro.org> wrote: > > > > perf cs-etm module converts decoder elements to packets and then we have > > more context crossing packets to generate synthenize samples, finally > > perf tool can faciliate samples for statistics and report the results. > > > > This patch series is to address several issues found related with > > packets handling and samples generation when worked firstly on branch > > sample flags support for Arm CoreSight trace data, so this patch series > > is dependency for sample flags setting, will send another dedicated > > patch series for sample flags later. > > > > In this patch series, the first two patches are mainly to fix issues in > > cs_etm__flush(): patch 0001 corrects packets swapping in cs_etm__flush() > > and this can fix the wrong branch sample caused by the missed packets > > swapping; patch 0002 is to fix the wrong samples generation with stale > > packets at the end of trace block. > > > > Patch 0003 and 0004 are for minor fixing; patch 0003 removes unused field > > 'cs_etm_decoder::trace_on', this can simplize the switch-case code for all > > discontinuity packet generation by using one code block; patch 0004 is to > > refactor enumeration cs_etm_sample_type. > > > > Patch 0005 is to rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY, we use > > a more general packet type to present trace discontinuity, so it can be > > used by TRACE_ON event, and also can be used by NO_SYNC and EO_TRACE > > elements. > > > > Patch 0006 is used to support NO_SYNC packet, otherwise the trace > > decoding cannot reflect the tracing discontinuity caused by NO_SYNC > > packet. > > > > Patch 0007 is used to support EO_TRACE packet, which also introduces > > the tracing discontinuity at the end of trace and we should save last > > trace data for it. > > > > Patch 0008 is used to generate branch sample for exception packets. > > > > Credit to Mike Leach and Robert Walker who made me clear for underlying > > mechanism for NO_SYNC/EO_TRACE elements, Mike also shared the detailed > > explanation for why we can treat NO_SYNC and TRACE_ON elements as the > > same, so except following Mike & Rob suggestion for trace discontinuity > > consolidation, most commit log of patches 0006/0007 also come from > > Mike's explanation. > > > > This patch series is applied directly on the acme's perf/core branch [1] > > with latest commit aaab25f03e9e ("perf trace: Allow selecting use the > > use of the ordered_events code"). > > > > With applying the dependency patch, this patch series has been tested > > for branch samples dumping with below command on Juno board: > > > > # perf script -F,-time,+ip,+sym,+dso,+addr,+symoff -k vmlinux > > Good day Arnaldo, > > I have reviewed all the changes in this set - please consider adding > to your next branch. Let me know if you want a pull request. Thanks, applied manually, pushing now to my tmp.perf/core branch, please take a look at the commit log messages to see if I didn't messed up anything. :-) - Arnaldo