lkml.org 
[lkml]   [2019]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 21/32] coresight: perf: Clean up function etm_setup_aux()
    Date
    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: Mathieu Poirier <mathieu.poirier@linaro.org>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Tested-by: Leo Yan <leo.yan@linaro.org>
    Tested-by: Robert Walker <robert.walker@arm.com>
    ---
    drivers/hwtracing/coresight/coresight-etm-perf.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
    index bbfed70b3402..b8ca3800b56b 100644
    --- a/drivers/hwtracing/coresight/coresight-etm-perf.c
    +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
    @@ -134,8 +134,7 @@ static void free_event_data(struct work_struct *work)
    if (event_data->snk_config && !WARN_ON(cpumask_empty(mask))) {
    cpu = cpumask_first(mask);
    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) {
    @@ -215,7 +214,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
    sink = coresight_get_enabled_sink(true);
    }

    - if (!sink || !sink_ops(sink)->alloc_buffer)
    + if (!sink)
    goto err;

    mask = &event_data->mask;
    @@ -261,6 +260,9 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
    if (cpu >= nr_cpu_ids)
    goto err;

    + if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer)
    + goto err;
    +
    /* Allocate the sink buffer for this session */
    event_data->snk_config =
    sink_ops(sink)->alloc_buffer(sink, cpu, pages,
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-04-25 21:55    [W:4.887 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site