Hi Mathieu, On Thu, 25 Feb 2021 at 21:51, Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> wrote: > > On Thu, Jan 28, 2021 at 05:09:32PM +0000, Mike Leach wrote: > > Add calls to activate the selected configuration as perf starts > > and stops the tracing session. > > > > Signed-off-by: Mike Leach <mike.leach@xxxxxxxxxx> > > --- > > drivers/hwtracing/coresight/coresight-etm-perf.c | 14 +++++++++++++- > > drivers/hwtracing/coresight/coresight-etm-perf.h | 2 ++ > > 2 files changed, 15 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c > > index e270bb1e0f7d..5c1aeddabc59 100644 > > --- a/drivers/hwtracing/coresight/coresight-etm-perf.c > > +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c > > @@ -178,6 +178,10 @@ static void free_event_data(struct work_struct *work) > > /* Free the sink buffers, if there are any */ > > free_sink_buffer(event_data); > > > > + /* clear any configuration we were using */ > > + if (event_data->config_id_hash) > > + cscfg_deactivate_config(event_data->config_id_hash); > > + > > for_each_cpu(cpu, mask) { > > struct list_head **ppath; > > > > @@ -236,7 +240,7 @@ static void etm_free_aux(void *data) > > static void *etm_setup_aux(struct perf_event *event, void **pages, > > int nr_pages, bool overwrite) > > { > > - u32 id; > > + u32 id, config_id; > > config_id, cfg_hash, id_hash... > OK - I'll get the naming consistent. > > int cpu = event->cpu; > > cpumask_t *mask; > > struct coresight_device *sink = NULL; > > @@ -253,6 +257,14 @@ static void *etm_setup_aux(struct perf_event *event, void **pages, > > sink = coresight_get_sink_by_id(id); > > } > > > > + /* check if user wants a coresight configuration selected */ > > + config_id = (u32)((event->attr.config2 & GENMASK_ULL(63, 32)) >> 32); > > + if (config_id) { > > + if (cscfg_activate_config(config_id)) > > + goto err; > > + event_data->config_id_hash = config_id; > > + } > > + > > mask = &event_data->mask; > > > > /* > > diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.h b/drivers/hwtracing/coresight/coresight-etm-perf.h > > index 3646a3837a0b..751d768939d8 100644 > > --- a/drivers/hwtracing/coresight/coresight-etm-perf.h > > +++ b/drivers/hwtracing/coresight/coresight-etm-perf.h > > @@ -49,12 +49,14 @@ struct etm_filters { > > * @work: Handle to free allocated memory outside IRQ context. > > * @mask: Hold the CPU(s) this event was set for. > > * @snk_config: The sink configuration. > > + * @config_id_hash: The id of any coresight config selected. > > * @path: An array of path, each slot for one CPU. > > */ > > struct etm_event_data { > > struct work_struct work; > > cpumask_t mask; > > void *snk_config; > > + u32 config_id_hash; > > Please align this with the naming convention you will be using above and > throughout. > > More comments tomorrow. > > Thanks, > Mathieu > > > struct list_head * __percpu *path; > > }; > > > > -- > > 2.17.1 > > Thanks Mike -- Mike Leach Principal Engineer, ARM Ltd. Manchester Design Centre. UK