Commit 02d5c897 authored by Mathieu Poirier's avatar Mathieu Poirier Committed by Greg Kroah-Hartman

coresight: perf: Clean up function etm_setup_aux()

There is no point in allocating sink memory for a trace session if
there is not a way to free it once it is no longer needed.  As such make
sure the sink API function to allocate and free memory have been
implemented before moving ahead with the establishment of a trace
session.
Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Tested-by: default avatarLeo Yan <leo.yan@linaro.org>
Tested-by: default avatarRobert Walker <robert.walker@arm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0916447c
...@@ -134,8 +134,7 @@ static void free_event_data(struct work_struct *work) ...@@ -134,8 +134,7 @@ static void free_event_data(struct work_struct *work)
if (event_data->snk_config && !WARN_ON(cpumask_empty(mask))) { if (event_data->snk_config && !WARN_ON(cpumask_empty(mask))) {
cpu = cpumask_first(mask); cpu = cpumask_first(mask);
sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu)); sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu));
if (sink_ops(sink)->free_buffer) sink_ops(sink)->free_buffer(event_data->snk_config);
sink_ops(sink)->free_buffer(event_data->snk_config);
} }
for_each_cpu(cpu, mask) { for_each_cpu(cpu, mask) {
...@@ -215,7 +214,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages, ...@@ -215,7 +214,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
sink = coresight_get_enabled_sink(true); sink = coresight_get_enabled_sink(true);
} }
if (!sink || !sink_ops(sink)->alloc_buffer) if (!sink)
goto err; goto err;
mask = &event_data->mask; mask = &event_data->mask;
...@@ -261,6 +260,9 @@ static void *etm_setup_aux(struct perf_event *event, void **pages, ...@@ -261,6 +260,9 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
if (cpu >= nr_cpu_ids) if (cpu >= nr_cpu_ids)
goto err; goto err;
if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer)
goto err;
/* Allocate the sink buffer for this session */ /* Allocate the sink buffer for this session */
event_data->snk_config = event_data->snk_config =
sink_ops(sink)->alloc_buffer(sink, cpu, pages, sink_ops(sink)->alloc_buffer(sink, cpu, pages,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment