perf arm_spe: Decode memory tagging properties
When SPE records a physical address, it can additionally tag the event with information from the Memory Tagging architecture extension. Decode the two additional fields in the SPE event payload. [leoy: Refined patch to use predefined macros] Signed-off-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Leo Yan <leo.yan@linaro.org> Reviewed-by: Dave Martin <Dave.Martin@arm.com> Acked-by: Will Deacon <will@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Al Grant <Al.Grant@arm.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: John Garry <john.garry@huawei.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Wei Li <liwei391@huawei.com> Link: https://lore.kernel.org/r/20201119152441.6972-16-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
3d829724b1
commit
3601e60550
|
@ -385,6 +385,7 @@ static int arm_spe_pkt_desc_addr(const struct arm_spe_pkt *packet,
|
|||
char *buf, size_t buf_len)
|
||||
{
|
||||
int ns, el, idx = packet->index;
|
||||
int ch, pat;
|
||||
u64 payload = packet->payload;
|
||||
int err = 0;
|
||||
|
||||
|
@ -404,9 +405,12 @@ static int arm_spe_pkt_desc_addr(const struct arm_spe_pkt *packet,
|
|||
break;
|
||||
case SPE_ADDR_PKT_HDR_INDEX_DATA_PHYS:
|
||||
ns = !!SPE_ADDR_PKT_GET_NS(payload);
|
||||
ch = !!SPE_ADDR_PKT_GET_CH(payload);
|
||||
pat = SPE_ADDR_PKT_GET_PAT(payload);
|
||||
payload = SPE_ADDR_PKT_ADDR_GET_BYTES_0_6(payload);
|
||||
arm_spe_pkt_out_string(&err, &buf, &buf_len,
|
||||
"PA 0x%llx ns=%d", payload, ns);
|
||||
"PA 0x%llx ns=%d ch=%d pat=%x",
|
||||
payload, ns, ch, pat);
|
||||
break;
|
||||
default:
|
||||
/* Unknown index */
|
||||
|
|
|
@ -73,6 +73,8 @@ struct arm_spe_pkt {
|
|||
|
||||
#define SPE_ADDR_PKT_GET_NS(v) (((v) & BIT_ULL(63)) >> 63)
|
||||
#define SPE_ADDR_PKT_GET_EL(v) (((v) & GENMASK_ULL(62, 61)) >> 61)
|
||||
#define SPE_ADDR_PKT_GET_CH(v) (((v) & BIT_ULL(62)) >> 62)
|
||||
#define SPE_ADDR_PKT_GET_PAT(v) (((v) & GENMASK_ULL(59, 56)) >> 56)
|
||||
|
||||
#define SPE_ADDR_PKT_EL0 0
|
||||
#define SPE_ADDR_PKT_EL1 1
|
||||
|
|
Loading…
Reference in New Issue