From: Leo Yan <leo.yan@linaro.org> To: James Clark <james.clark@arm.com> Cc: mathieu.poirier@linaro.org, coresight@lists.linaro.org, linux-perf-users@vger.kernel.org, mike.leach@linaro.org, acme@kernel.org, suzuki.poulose@arm.com, John Garry <john.garry@huawei.com>, Will Deacon <will@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 7/9] perf cs-etm: Create ETE decoder Date: Tue, 24 Aug 2021 16:33:05 +0800 [thread overview] Message-ID: <20210824083305.GE204566@leoy-ThinkPad-X240s> (raw) In-Reply-To: <20210806134109.1182235-8-james.clark@arm.com> On Fri, Aug 06, 2021 at 02:41:07PM +0100, James Clark wrote: > If the magic number indicates ETE instantiate a OCSD_BUILTIN_DCD_ETE > decoder instead of OCSD_BUILTIN_DCD_ETMV4I. ETE is the new trace feature > for Armv9. > > Testing performed > ================= > > * Old files with v0 and v1 headers for ETMv4 still open correctly > * New files with new magic number open on new versions of perf > * New files with new magic number fail to open on old versions of perf > * Decoding with the ETE decoder results in the same output as the ETMv4 > decoder as long as there are no new ETE packet types > > Signed-off-by: James Clark <james.clark@arm.com> > > --- > .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 20 +++++++++++++++++++ > .../perf/util/cs-etm-decoder/cs-etm-decoder.h | 12 +++++++++++ > tools/perf/util/cs-etm.c | 18 +++++++++++++++++ > 3 files changed, 50 insertions(+) > > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > index 12cee321fbf2..3071e5deddcc 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > @@ -156,6 +156,20 @@ static void cs_etm_decoder__gen_etmv4_config(struct cs_etm_trace_params *params, > config->core_prof = profile_CortexA; > } > > +static void cs_etm_decoder__gen_ete_config(struct cs_etm_trace_params *params, > + ocsd_ete_cfg *config) > +{ > + config->reg_configr = params->ete.reg_configr; > + config->reg_traceidr = params->ete.reg_traceidr; > + config->reg_idr0 = params->ete.reg_idr0; > + config->reg_idr1 = params->ete.reg_idr1; > + config->reg_idr2 = params->ete.reg_idr2; > + config->reg_idr8 = params->ete.reg_idr8; > + config->reg_devarch = params->ete.reg_devarch; > + config->arch_ver = ARCH_AA64; Just a nitpick: if we connect with patch 02, it implement function cs_etm_decoder__get_etmv4_arch_ver(). We can extend it to a more general function cs_etm_decoder__get_arch_ver(); this can allow us to have a central place to calculate 'arch_ver' for different archs. I understand your patch doesn't want to mix things between ETMv4 and ETE, either way is okay for me: Reviewed-by: Leo Yan <leo.yan@linaro.org> > + config->core_prof = profile_CortexA; > +} > + > static void cs_etm_decoder__print_str_cb(const void *p_context, > const char *msg, > const int str_len) > @@ -603,6 +617,7 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, > const char *decoder_name; > ocsd_etmv3_cfg config_etmv3; > ocsd_etmv4_cfg trace_config_etmv4; > + ocsd_ete_cfg trace_config_ete; > void *trace_config; > u8 csid; > > @@ -620,6 +635,11 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, > decoder_name = OCSD_BUILTIN_DCD_ETMV4I; > trace_config = &trace_config_etmv4; > break; > + case CS_ETM_PROTO_ETE: > + cs_etm_decoder__gen_ete_config(t_params, &trace_config_ete); > + decoder_name = OCSD_BUILTIN_DCD_ETE; > + trace_config = &trace_config_ete; > + break; > default: > return -1; > } > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > index 11f3391d06f2..0102ece5ca3e 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > @@ -37,11 +37,22 @@ struct cs_etmv4_trace_params { > u32 reg_traceidr; > }; > > +struct cs_ete_trace_params { > + u32 reg_idr0; > + u32 reg_idr1; > + u32 reg_idr2; > + u32 reg_idr8; > + u32 reg_configr; > + u32 reg_traceidr; > + u32 reg_devarch; > +}; > + > struct cs_etm_trace_params { > int protocol; > union { > struct cs_etmv3_trace_params etmv3; > struct cs_etmv4_trace_params etmv4; > + struct cs_ete_trace_params ete; > }; > }; > > @@ -65,6 +76,7 @@ enum { > CS_ETM_PROTO_ETMV4i, > CS_ETM_PROTO_ETMV4d, > CS_ETM_PROTO_PTM, > + CS_ETM_PROTO_ETE > }; > > enum cs_etm_decoder_operation { > diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c > index d540512a3c96..e5649e9ea140 100644 > --- a/tools/perf/util/cs-etm.c > +++ b/tools/perf/util/cs-etm.c > @@ -460,6 +460,21 @@ static void cs_etm__set_trace_param_etmv4(struct cs_etm_trace_params *t_params, > t_params[idx].etmv4.reg_traceidr = metadata[idx][CS_ETMV4_TRCTRACEIDR]; > } > > +static void cs_etm__set_trace_param_ete(struct cs_etm_trace_params *t_params, > + struct cs_etm_auxtrace *etm, int idx) > +{ > + u64 **metadata = etm->metadata; > + > + t_params[idx].protocol = CS_ETM_PROTO_ETE; > + t_params[idx].ete.reg_idr0 = metadata[idx][CS_ETMV4_TRCIDR0]; > + t_params[idx].ete.reg_idr1 = metadata[idx][CS_ETMV4_TRCIDR1]; > + t_params[idx].ete.reg_idr2 = metadata[idx][CS_ETMV4_TRCIDR2]; > + t_params[idx].ete.reg_idr8 = metadata[idx][CS_ETMV4_TRCIDR8]; > + t_params[idx].ete.reg_configr = metadata[idx][CS_ETMV4_TRCCONFIGR]; > + t_params[idx].ete.reg_traceidr = metadata[idx][CS_ETMV4_TRCTRACEIDR]; > + t_params[idx].ete.reg_devarch = metadata[idx][CS_ETE_TRCDEVARCH]; > +} > + > static int cs_etm__init_trace_params(struct cs_etm_trace_params *t_params, > struct cs_etm_auxtrace *etm, > int decoders) > @@ -479,6 +494,9 @@ static int cs_etm__init_trace_params(struct cs_etm_trace_params *t_params, > case __perf_cs_etmv4_magic: > cs_etm__set_trace_param_etmv4(t_params, etm, i); > break; > + case __perf_cs_ete_magic: > + cs_etm__set_trace_param_ete(t_params, etm, i); > + break; > default: > return -EINVAL; > } > -- > 2.28.0 >
WARNING: multiple messages have this Message-ID (diff)
From: Leo Yan <leo.yan@linaro.org> To: James Clark <james.clark@arm.com> Cc: mathieu.poirier@linaro.org, coresight@lists.linaro.org, linux-perf-users@vger.kernel.org, mike.leach@linaro.org, acme@kernel.org, suzuki.poulose@arm.com, John Garry <john.garry@huawei.com>, Will Deacon <will@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 7/9] perf cs-etm: Create ETE decoder Date: Tue, 24 Aug 2021 16:33:05 +0800 [thread overview] Message-ID: <20210824083305.GE204566@leoy-ThinkPad-X240s> (raw) In-Reply-To: <20210806134109.1182235-8-james.clark@arm.com> On Fri, Aug 06, 2021 at 02:41:07PM +0100, James Clark wrote: > If the magic number indicates ETE instantiate a OCSD_BUILTIN_DCD_ETE > decoder instead of OCSD_BUILTIN_DCD_ETMV4I. ETE is the new trace feature > for Armv9. > > Testing performed > ================= > > * Old files with v0 and v1 headers for ETMv4 still open correctly > * New files with new magic number open on new versions of perf > * New files with new magic number fail to open on old versions of perf > * Decoding with the ETE decoder results in the same output as the ETMv4 > decoder as long as there are no new ETE packet types > > Signed-off-by: James Clark <james.clark@arm.com> > > --- > .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 20 +++++++++++++++++++ > .../perf/util/cs-etm-decoder/cs-etm-decoder.h | 12 +++++++++++ > tools/perf/util/cs-etm.c | 18 +++++++++++++++++ > 3 files changed, 50 insertions(+) > > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > index 12cee321fbf2..3071e5deddcc 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > @@ -156,6 +156,20 @@ static void cs_etm_decoder__gen_etmv4_config(struct cs_etm_trace_params *params, > config->core_prof = profile_CortexA; > } > > +static void cs_etm_decoder__gen_ete_config(struct cs_etm_trace_params *params, > + ocsd_ete_cfg *config) > +{ > + config->reg_configr = params->ete.reg_configr; > + config->reg_traceidr = params->ete.reg_traceidr; > + config->reg_idr0 = params->ete.reg_idr0; > + config->reg_idr1 = params->ete.reg_idr1; > + config->reg_idr2 = params->ete.reg_idr2; > + config->reg_idr8 = params->ete.reg_idr8; > + config->reg_devarch = params->ete.reg_devarch; > + config->arch_ver = ARCH_AA64; Just a nitpick: if we connect with patch 02, it implement function cs_etm_decoder__get_etmv4_arch_ver(). We can extend it to a more general function cs_etm_decoder__get_arch_ver(); this can allow us to have a central place to calculate 'arch_ver' for different archs. I understand your patch doesn't want to mix things between ETMv4 and ETE, either way is okay for me: Reviewed-by: Leo Yan <leo.yan@linaro.org> > + config->core_prof = profile_CortexA; > +} > + > static void cs_etm_decoder__print_str_cb(const void *p_context, > const char *msg, > const int str_len) > @@ -603,6 +617,7 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, > const char *decoder_name; > ocsd_etmv3_cfg config_etmv3; > ocsd_etmv4_cfg trace_config_etmv4; > + ocsd_ete_cfg trace_config_ete; > void *trace_config; > u8 csid; > > @@ -620,6 +635,11 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, > decoder_name = OCSD_BUILTIN_DCD_ETMV4I; > trace_config = &trace_config_etmv4; > break; > + case CS_ETM_PROTO_ETE: > + cs_etm_decoder__gen_ete_config(t_params, &trace_config_ete); > + decoder_name = OCSD_BUILTIN_DCD_ETE; > + trace_config = &trace_config_ete; > + break; > default: > return -1; > } > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > index 11f3391d06f2..0102ece5ca3e 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > @@ -37,11 +37,22 @@ struct cs_etmv4_trace_params { > u32 reg_traceidr; > }; > > +struct cs_ete_trace_params { > + u32 reg_idr0; > + u32 reg_idr1; > + u32 reg_idr2; > + u32 reg_idr8; > + u32 reg_configr; > + u32 reg_traceidr; > + u32 reg_devarch; > +}; > + > struct cs_etm_trace_params { > int protocol; > union { > struct cs_etmv3_trace_params etmv3; > struct cs_etmv4_trace_params etmv4; > + struct cs_ete_trace_params ete; > }; > }; > > @@ -65,6 +76,7 @@ enum { > CS_ETM_PROTO_ETMV4i, > CS_ETM_PROTO_ETMV4d, > CS_ETM_PROTO_PTM, > + CS_ETM_PROTO_ETE > }; > > enum cs_etm_decoder_operation { > diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c > index d540512a3c96..e5649e9ea140 100644 > --- a/tools/perf/util/cs-etm.c > +++ b/tools/perf/util/cs-etm.c > @@ -460,6 +460,21 @@ static void cs_etm__set_trace_param_etmv4(struct cs_etm_trace_params *t_params, > t_params[idx].etmv4.reg_traceidr = metadata[idx][CS_ETMV4_TRCTRACEIDR]; > } > > +static void cs_etm__set_trace_param_ete(struct cs_etm_trace_params *t_params, > + struct cs_etm_auxtrace *etm, int idx) > +{ > + u64 **metadata = etm->metadata; > + > + t_params[idx].protocol = CS_ETM_PROTO_ETE; > + t_params[idx].ete.reg_idr0 = metadata[idx][CS_ETMV4_TRCIDR0]; > + t_params[idx].ete.reg_idr1 = metadata[idx][CS_ETMV4_TRCIDR1]; > + t_params[idx].ete.reg_idr2 = metadata[idx][CS_ETMV4_TRCIDR2]; > + t_params[idx].ete.reg_idr8 = metadata[idx][CS_ETMV4_TRCIDR8]; > + t_params[idx].ete.reg_configr = metadata[idx][CS_ETMV4_TRCCONFIGR]; > + t_params[idx].ete.reg_traceidr = metadata[idx][CS_ETMV4_TRCTRACEIDR]; > + t_params[idx].ete.reg_devarch = metadata[idx][CS_ETE_TRCDEVARCH]; > +} > + > static int cs_etm__init_trace_params(struct cs_etm_trace_params *t_params, > struct cs_etm_auxtrace *etm, > int decoders) > @@ -479,6 +494,9 @@ static int cs_etm__init_trace_params(struct cs_etm_trace_params *t_params, > case __perf_cs_etmv4_magic: > cs_etm__set_trace_param_etmv4(t_params, etm, i); > break; > + case __perf_cs_ete_magic: > + cs_etm__set_trace_param_ete(t_params, etm, i); > + break; > default: > return -EINVAL; > } > -- > 2.28.0 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-08-24 8:33 UTC|newest] Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-06 13:41 [PATCH v2 0/9] Support ETE decoding James Clark 2021-08-06 13:41 ` James Clark 2021-08-06 13:41 ` [PATCH v2 1/9] perf cs-etm: Refactor initialisation of decoder params James Clark 2021-08-06 13:41 ` James Clark 2021-09-03 8:52 ` Suzuki K Poulose 2021-09-03 8:52 ` Suzuki K Poulose 2021-09-03 11:05 ` Arnaldo Carvalho de Melo 2021-09-03 11:05 ` Arnaldo Carvalho de Melo 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 2/9] perf cs-etm: Initialise architecture based on TRCIDR1 James Clark 2021-08-06 13:41 ` James Clark 2021-08-24 6:53 ` Leo Yan 2021-08-24 6:53 ` Leo Yan 2021-09-03 8:55 ` Suzuki K Poulose 2021-09-03 8:55 ` Suzuki K Poulose 2021-09-03 11:07 ` Arnaldo Carvalho de Melo 2021-09-03 11:07 ` Arnaldo Carvalho de Melo 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 3/9] perf cs-etm: Refactor out ETMv4 header saving James Clark 2021-08-06 13:41 ` James Clark 2021-08-24 6:58 ` Leo Yan 2021-08-24 6:58 ` Leo Yan 2021-09-03 8:56 ` Suzuki K Poulose 2021-09-03 8:56 ` Suzuki K Poulose 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 4/9] perf cs-etm: Save TRCDEVARCH register James Clark 2021-08-06 13:41 ` James Clark 2021-08-24 7:14 ` Leo Yan 2021-08-24 7:14 ` Leo Yan 2021-09-03 9:08 ` Suzuki K Poulose 2021-09-03 9:08 ` Suzuki K Poulose 2021-09-03 11:15 ` Arnaldo Carvalho de Melo 2021-09-03 11:15 ` Arnaldo Carvalho de Melo 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 5/9] perf cs-etm: Fix typo James Clark 2021-08-06 13:41 ` James Clark 2021-08-24 7:15 ` Leo Yan 2021-08-24 7:15 ` Leo Yan 2021-09-03 9:09 ` Suzuki K Poulose 2021-09-03 9:09 ` Suzuki K Poulose 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 6/9] perf cs-etm: Update OpenCSD decoder for ETE James Clark 2021-08-06 13:41 ` James Clark 2021-09-03 9:10 ` Suzuki K Poulose 2021-09-03 9:10 ` Suzuki K Poulose 2021-09-03 11:16 ` Arnaldo Carvalho de Melo 2021-09-03 11:16 ` Arnaldo Carvalho de Melo 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 7/9] perf cs-etm: Create ETE decoder James Clark 2021-08-06 13:41 ` James Clark 2021-08-24 8:33 ` Leo Yan [this message] 2021-08-24 8:33 ` Leo Yan 2021-08-25 10:13 ` James Clark 2021-08-25 10:13 ` James Clark 2021-09-03 9:15 ` Suzuki K Poulose 2021-09-03 9:15 ` Suzuki K Poulose 2021-09-03 11:16 ` Arnaldo Carvalho de Melo 2021-09-03 11:16 ` Arnaldo Carvalho de Melo 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 8/9] perf cs-etm: Print the decoder name James Clark 2021-08-06 13:41 ` James Clark 2021-09-03 9:17 ` Suzuki K Poulose 2021-09-03 9:17 ` Suzuki K Poulose 2021-09-03 11:18 ` Arnaldo Carvalho de Melo 2021-09-03 11:18 ` Arnaldo Carvalho de Melo 2021-09-03 11:52 ` Arnaldo Carvalho de Melo 2021-09-03 11:52 ` Arnaldo Carvalho de Melo 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-06 13:41 ` [PATCH v2 9/9] perf cs-etm: Show a warning for an unknown magic number James Clark 2021-08-06 13:41 ` James Clark 2021-08-24 8:36 ` Leo Yan 2021-08-24 8:36 ` Leo Yan 2021-09-01 15:54 ` Arnaldo Carvalho de Melo 2021-09-01 15:54 ` Arnaldo Carvalho de Melo 2021-09-01 16:07 ` Arnaldo Carvalho de Melo 2021-09-01 16:07 ` Arnaldo Carvalho de Melo 2021-09-01 16:16 ` Arnaldo Carvalho de Melo 2021-09-01 16:16 ` Arnaldo Carvalho de Melo 2021-09-01 16:25 ` Arnaldo Carvalho de Melo 2021-09-01 16:25 ` Arnaldo Carvalho de Melo 2021-09-01 16:49 ` Arnaldo Carvalho de Melo 2021-09-01 16:49 ` Arnaldo Carvalho de Melo 2021-09-02 7:53 ` Leo Yan 2021-09-02 7:53 ` Leo Yan 2021-09-02 17:48 ` Mathieu Poirier 2021-09-02 17:48 ` Mathieu Poirier 2021-09-02 18:19 ` Arnaldo Carvalho de Melo 2021-09-02 18:19 ` Arnaldo Carvalho de Melo 2021-09-02 19:22 ` Mathieu Poirier 2021-09-02 19:22 ` Mathieu Poirier 2021-09-05 21:24 ` Mike Leach 2021-09-05 21:24 ` Mike Leach 2021-08-24 8:47 ` [PATCH v2 0/9] Support ETE decoding Leo Yan 2021-08-24 8:47 ` Leo Yan 2021-08-25 10:14 ` James Clark 2021-08-25 10:14 ` James Clark
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210824083305.GE204566@leoy-ThinkPad-X240s \ --to=leo.yan@linaro.org \ --cc=acme@kernel.org \ --cc=alexander.shishkin@linux.intel.com \ --cc=coresight@lists.linaro.org \ --cc=james.clark@arm.com \ --cc=john.garry@huawei.com \ --cc=jolsa@redhat.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-perf-users@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mathieu.poirier@linaro.org \ --cc=mike.leach@linaro.org \ --cc=namhyung@kernel.org \ --cc=suzuki.poulose@arm.com \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.