mirror of https://gitee.com/openkylin/linux.git
coresight: etm: perf: Add default sink selection to etm perf
Add default sink selection to the perf trace handling in the etm driver. Uses the select default sink infrastructure to select a sink for the perf session, if no other sink is specified. Signed-off-by: Mike Leach <mike.leach@linaro.org> Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Link: https://lore.kernel.org/r/20200716175746.3338735-17-mathieu.poirier@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
24497d387c
commit
bbfb8f3e4e
|
@ -226,9 +226,6 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
|
|||
sink = coresight_get_enabled_sink(true);
|
||||
}
|
||||
|
||||
if (!sink)
|
||||
goto err;
|
||||
|
||||
mask = &event_data->mask;
|
||||
|
||||
/*
|
||||
|
@ -253,6 +250,16 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
|
|||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* No sink provided - look for a default sink for one of the
|
||||
* devices. At present we only support topology where all CPUs
|
||||
* use the same sink [N:1], so only need to find one sink. The
|
||||
* coresight_build_path later will remove any CPU that does not
|
||||
* attach to the sink, or if we have not found a sink.
|
||||
*/
|
||||
if (!sink)
|
||||
sink = coresight_find_default_sink(csdev);
|
||||
|
||||
/*
|
||||
* Building a path doesn't enable it, it simply builds a
|
||||
* list of devices from source to sink that can be
|
||||
|
@ -267,6 +274,10 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
|
|||
*etm_event_cpu_path_ptr(event_data, cpu) = path;
|
||||
}
|
||||
|
||||
/* no sink found for any CPU - cannot trace */
|
||||
if (!sink)
|
||||
goto err;
|
||||
|
||||
/* If we don't have any CPUs ready for tracing, abort */
|
||||
cpu = cpumask_first(mask);
|
||||
if (cpu >= nr_cpu_ids)
|
||||
|
|
Loading…
Reference in New Issue