Commit bbfb8f3e authored by Mike Leach's avatar Mike Leach Committed by Greg Kroah-Hartman
Browse files

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: default avatarMike Leach <mike.leach@linaro.org>
Reviewed-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20200716175746.3338735-17-mathieu.poirier@linaro.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 24497d38
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -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)