[PATCH v5 00/21] perf arm-spe: Refactor decoding & dumping flow

From: Leo Yan
Date: Thu Oct 29 2020 - 03:35:58 EST


This is patch set v5 for refactoring Arm SPE trace decoding and dumping.
It follows Dave's suggestions to implement a cumulative error for
function arm_spe_pkt_snprintf(); and fixed the patch 10 "perf arm_spe:
Fixup top byte for data virtual address" for detecting kernel address
with bits [55:52].

This patch set is cleanly applied on the top of perf/core branch
with commit 7cf726a59435 ("Merge tag 'linux-kselftest-kunit-5.10-rc1' of
git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest"),
And I retested this patch set on Hisilicon D06 platform with commands
"perf script" and "perf script -D".

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);

Changes from v2:
- Tried best to address Andre's comments and refined patches;
- Added new patches 08, 11, 13, 16 for introducing new functions for
packets parsing (Andre);
- Removed size condition checking for event packet (Andre);
- Used PKT_XXX_GET() form to replace PKT_XXX_MASK()/PKT_XXX_SHIFT()
(Andre).

Changes from v1:
- Heavily rewrote the patch 05 for refactoring printing strings; this
is fundamental change, so adjusted the sequence for patches and moved
the printing string patch ahead from patch 10 (v1) to patch 05;
- Changed to use GENMASK_ULL() for bits mask;
- Added Andre's patch 13 for dumping memory tagging;
- Refined patch 12 for adding sub classes for Operation packet, merged
some commit log from Andre's patch, which allows commit log and code
to be more clear; Added "Co-developed-by: Andre Przywara" tag to
reflect this.


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

Leo Yan (19):
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: 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 | 564 ++++++++++--------
.../arm-spe-decoder/arm-spe-pkt-decoder.h | 122 +++-
4 files changed, 441 insertions(+), 321 deletions(-)

--
2.17.1