[PATCH v3 00/20] perf arm-spe: Refactor decoding & dumping flow

From: Leo Yan
Date: Thu Oct 22 2020 - 10:58:33 EST


This is patch set v3 for refactoring Arm SPE trace decoding and dumping.
In this version, it mainly addressed the comments and suggestions from
mailing list (mainly from Andre Przywara, thanks!).

This patch set is to refactor the Arm SPE decoding with:

- Patches 01, 02 are minor cleans up for header, typos;
- Patches 03, 04 and 05 are used to fix and polish the packet and
payload length calculation;
- Patch 06 is to add a helper to wrap up printing strings, this can
avoid bunch of duplicate code lines;
- Patches 07 ~ 18 are used to refactor decoding for different types
packet one by one (address packet, context packet, counter packet,
event packet, operation packet); it also introduces separate functions
for parsing specific packet, this can allow the code more readable and
easier to manage and extend code;
- Patch 19 comes from Andre to dump memory tagging;
- Patch 20 comes from Wei Li to add decoding for ARMv8.3 SVE extension.

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 tested this patch set on Hisilicon D06 platform with commands
"perf script" and "perf script -D".

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 (18):
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: 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 | 43 +-
.../util/arm-spe-decoder/arm-spe-decoder.h | 17 -
.../arm-spe-decoder/arm-spe-pkt-decoder.c | 658 +++++++++++-------
.../arm-spe-decoder/arm-spe-pkt-decoder.h | 132 +++-
4 files changed, 536 insertions(+), 314 deletions(-)

--
2.17.1