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@linaro.org
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...
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