Message ID | 20211102180739.18049-3-german.gomez@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | perf arm-spe: Track pid/tid for Arm SPE samples | expand |
On Tue, Nov 02, 2021 at 06:07:38PM +0000, German Gomez wrote: > This patch is to save context ID in record, this will be used to set TID > for samples. > > Signed-off-by: Leo Yan <leo.yan@linaro.org> > Signed-off-by: James Clark <james.clark@arm.com> > Signed-off-by: German Gomez <german.gomez@arm.com> Reviewed-by: Leo Yan <leo.yan@linaro.org> > --- > tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 2 ++ > tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 1 + > 2 files changed, 3 insertions(+) > > diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c > index 32fe41835..1b58859d2 100644 > --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c > +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c > @@ -151,6 +151,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) > u64 payload, ip; > > memset(&decoder->record, 0x0, sizeof(decoder->record)); > + decoder->record.context_id = -1; > > while (1) { > err = arm_spe_get_next_packet(decoder); > @@ -180,6 +181,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) > case ARM_SPE_COUNTER: > break; > case ARM_SPE_CONTEXT: > + decoder->record.context_id = payload; > break; > case ARM_SPE_OP_TYPE: > if (idx == SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC) { > diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h > index 59bdb7309..46a8556a9 100644 > --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h > +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h > @@ -38,6 +38,7 @@ struct arm_spe_record { > u64 timestamp; > u64 virt_addr; > u64 phys_addr; > + u64 context_id; > }; > > struct arm_spe_insn; > -- > 2.25.1 >
On Tue, Nov 02, 2021 at 06:07:38PM +0000, German Gomez wrote: > This patch is to save context ID in record, this will be used to set TID > for samples. > > Signed-off-by: Leo Yan <leo.yan@linaro.org> > Signed-off-by: James Clark <james.clark@arm.com> > Signed-off-by: German Gomez <german.gomez@arm.com> > --- > tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 2 ++ > tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 1 + > 2 files changed, 3 insertions(+) > > diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c > index 32fe41835..1b58859d2 100644 > --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c > +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c > @@ -151,6 +151,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) > u64 payload, ip; > > memset(&decoder->record, 0x0, sizeof(decoder->record)); > + decoder->record.context_id = -1; Since 'context_id' is type u64, here it's good to assign '(u64)-1'. > while (1) { > err = arm_spe_get_next_packet(decoder); > @@ -180,6 +181,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) > case ARM_SPE_COUNTER: > break; > case ARM_SPE_CONTEXT: > + decoder->record.context_id = payload; > break; > case ARM_SPE_OP_TYPE: > if (idx == SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC) { > diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h > index 59bdb7309..46a8556a9 100644 > --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h > +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h > @@ -38,6 +38,7 @@ struct arm_spe_record { > u64 timestamp; > u64 virt_addr; > u64 phys_addr; > + u64 context_id; > }; > > struct arm_spe_insn; > -- > 2.25.1 >
On 06/11/2021 13:47, Leo Yan wrote: > On Tue, Nov 02, 2021 at 06:07:38PM +0000, German Gomez wrote: >> This patch is to save context ID in record, this will be used to set TID >> for samples. >> >> Signed-off-by: Leo Yan <leo.yan@linaro.org> >> Signed-off-by: James Clark <james.clark@arm.com> >> Signed-off-by: German Gomez <german.gomez@arm.com> >> --- >> tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 2 ++ >> tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 1 + >> 2 files changed, 3 insertions(+) >> >> diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c >> index 32fe41835..1b58859d2 100644 >> --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c >> +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c >> @@ -151,6 +151,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) >> u64 payload, ip; >> >> memset(&decoder->record, 0x0, sizeof(decoder->record)); >> + decoder->record.context_id = -1; > Since 'context_id' is type u64, here it's good to assign '(u64)-1'. Ack. Thanks, German > >> while (1) { >> err = arm_spe_get_next_packet(decoder); >> @@ -180,6 +181,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) >> case ARM_SPE_COUNTER: >> break; >> case ARM_SPE_CONTEXT: >> + decoder->record.context_id = payload; >> break; >> case ARM_SPE_OP_TYPE: >> if (idx == SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC) { >> diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h >> index 59bdb7309..46a8556a9 100644 >> --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h >> +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h >> @@ -38,6 +38,7 @@ struct arm_spe_record { >> u64 timestamp; >> u64 virt_addr; >> u64 phys_addr; >> + u64 context_id; >> }; >> >> struct arm_spe_insn; >> -- >> 2.25.1 >>
diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c index 32fe41835..1b58859d2 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -151,6 +151,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) u64 payload, ip; memset(&decoder->record, 0x0, sizeof(decoder->record)); + decoder->record.context_id = -1; while (1) { err = arm_spe_get_next_packet(decoder); @@ -180,6 +181,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) case ARM_SPE_COUNTER: break; case ARM_SPE_CONTEXT: + decoder->record.context_id = payload; break; case ARM_SPE_OP_TYPE: if (idx == SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC) { diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h index 59bdb7309..46a8556a9 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -38,6 +38,7 @@ struct arm_spe_record { u64 timestamp; u64 virt_addr; u64 phys_addr; + u64 context_id; }; struct arm_spe_insn;