[PATCH v8 00/22] perf arm-spe: Refactor decoding & dumping flow

From: Leo Yan
Date: Wed Nov 11 2020 - 02:12:25 EST


This is patch set v8 for refactoring Arm SPE trace decoding and dumping.

This version addresses Andre's comment to pass parameter '&buf_len' at
the last call arm_spe_pkt_snprintf() in the function arm_spe_pkt_desc().

This patch set is cleanly applied on the top of perf/core branch
with commit 644bf4b0f7ac ("perf jevents: Add test for arch std events").

I retested this patch set on Hisilicon D06 platform with commands
"perf report -D" and "perf script", compared the decoding results
between with this patch set and without this patch set, "diff" tool
shows the result as expected.

Changes from v7:
- Changed to pass '&buf_len' for the last call arm_spe_pkt_snprintf() in
the patch 07/22 (Andre).

Changes from v6:
- Removed the redundant comma from the string in the patch 21/22 "perf
arm_spe: Decode memory tagging properties" (Dave);
- Refined the return value for arm_spe_pkt_desc(): returns 0 for
success, otherwise returns non zero for failures; handle error code at
the end of function arm_spe_pkt_desc(); this is accomplished in the
new patch 07/22 "perf arm-spe: Consolidate arm_spe_pkt_desc()'s
return value" (Dave).

Changes from v5:
- Directly bail out arm_spe_pkt_snprintf() if any error occurred
(Andre).

Changes from v4:
- Implemented a cumulative error for arm_spe_pkt_snprintf() and changed
to condense code for printing strings (Dave);
- Changed to check payload bits [55:52] for parse kernel address
(Andre).

Changes from v3:
- Refined arm_spe_payload_len() and removed macro SPE_HEADER_SZ()
(Andre);
- Refined packet header index macros (Andre);
- Added patch "perf arm_spe: Fixup top byte for data virtual address" to
fixup the data virtual address for 64KB pages and refined comments for
the fixup (Andre);
- Added Andre's review tag (using "b4 am" command);
- Changed the macros to SPE_PKT_IS_XXX() format to check operation types
(Andre).


Andre Przywara (1):
perf arm_spe: Decode memory tagging properties

Leo Yan (20):
perf arm-spe: Include bitops.h for BIT() macro
perf arm-spe: Fix a typo in comment
perf arm-spe: Refactor payload size calculation
perf arm-spe: Refactor arm_spe_get_events()
perf arm-spe: Fix packet length handling
perf arm-spe: Refactor printing string to buffer
perf arm-spe: Consolidate arm_spe_pkt_desc()'s return value
perf arm-spe: Refactor packet header parsing
perf arm-spe: Add new function arm_spe_pkt_desc_addr()
perf arm-spe: Refactor address packet handling
perf arm_spe: Fixup top byte for data virtual address
perf arm-spe: Refactor context packet handling
perf arm-spe: Add new function arm_spe_pkt_desc_counter()
perf arm-spe: Refactor counter packet handling
perf arm-spe: Add new function arm_spe_pkt_desc_event()
perf arm-spe: Refactor event type handling
perf arm-spe: Remove size condition checking for events
perf arm-spe: Add new function arm_spe_pkt_desc_op_type()
perf arm-spe: Refactor operation packet handling
perf arm-spe: Add more sub classes for operation packet

Wei Li (1):
perf arm-spe: Add support for ARMv8.3-SPE

.../util/arm-spe-decoder/arm-spe-decoder.c | 59 +-
.../util/arm-spe-decoder/arm-spe-decoder.h | 17 -
.../arm-spe-decoder/arm-spe-pkt-decoder.c | 601 ++++++++++--------
.../arm-spe-decoder/arm-spe-pkt-decoder.h | 122 +++-
tools/perf/util/arm-spe.c | 2 +-
5 files changed, 479 insertions(+), 322 deletions(-)

--
2.17.1