Lines Matching full:sink

34  * the trace path and the sink configuration. The event data is accessible
35 * via perf_get_aux(handle). However, a sink could "end" a perf output
36 * handle via the IRQ handler. And if the "sink" encounters a failure
65 /* preset - if sink ID is used as a configuration selector */
67 /* Sink ID - same for all ETMs */
197 struct coresight_device *sink; in free_sink_buffer() local
206 sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu)); in free_sink_buffer()
207 sink_ops(sink)->free_buffer(event_data->snk_config); in free_sink_buffer()
219 /* Free the sink buffers, if there are any */ in free_event_data()
287 * so that they can use the same sink buffers, when an event
311 struct coresight_device *sink = NULL; in etm_setup_aux() local
320 /* First get the selected sink from user space. */ in etm_setup_aux()
323 sink = user_sink = coresight_get_sink_by_id(id); in etm_setup_aux()
362 * No sink provided - look for a default sink for all the ETMs, in etm_setup_aux()
364 * We allocate the sink specific buffers only once for this in etm_setup_aux()
365 * event. If the ETMs have different default sink devices, we in etm_setup_aux()
366 * can only use a single "type" of sink as the event can carry in etm_setup_aux()
367 * only one sink specific buffer. Thus we have to make sure in etm_setup_aux()
370 * we choose the first sink and check if the remaining ETMs in etm_setup_aux()
371 * have a compatible default sink. We don't trace on a CPU in etm_setup_aux()
372 * if the sink is not compatible. in etm_setup_aux()
375 /* Find the default sink for this ETM */ in etm_setup_aux()
376 sink = coresight_find_default_sink(csdev); in etm_setup_aux()
377 if (!sink) { in etm_setup_aux()
382 /* Check if this sink compatible with the last sink */ in etm_setup_aux()
383 if (last_sink && !sinks_compatible(last_sink, sink)) { in etm_setup_aux()
387 last_sink = sink; in etm_setup_aux()
392 * list of devices from source to sink that can be in etm_setup_aux()
395 path = coresight_build_path(csdev, sink); in etm_setup_aux()
412 /* no sink found for any CPU - cannot trace */ in etm_setup_aux()
413 if (!sink) in etm_setup_aux()
421 if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer) in etm_setup_aux()
425 * Allocate the sink buffer for this session. All the sinks in etm_setup_aux()
427 * same type. Thus the same sink configuration is used by the in etm_setup_aux()
431 sink_ops(sink)->alloc_buffer(sink, event, pages, in etm_setup_aux()
451 struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu); in etm_event_start() local
473 * sink from this ETM. We can't do much in this case if in etm_event_start()
474 * the sink was specified or hinted to the driver. For in etm_event_start()
480 * reachable to a sink. in etm_event_start()
486 /* We need a sink, no need to continue without one */ in etm_event_start()
487 sink = coresight_get_sink(path); in etm_event_start()
488 if (WARN_ON_ONCE(!sink)) in etm_event_start()
524 * to handle cases where if the sink failed to start the in etm_event_start()
540 struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu); in etm_event_stop() local
585 sink = coresight_get_sink(path); in etm_event_stop()
586 if (!sink) in etm_event_stop()
597 * (e.g, the sink driver was unable to restart the in etm_event_stop()
606 if (!sink_ops(sink)->update_buffer) in etm_event_stop()
609 size = sink_ops(sink)->update_buffer(sink, handle, in etm_event_stop()
613 * sink could have closed it from an IRQ. in etm_event_stop()
614 * The sink driver must handle the race with in etm_event_stop()
780 * If this function is called adding a sink then the hash is used for in etm_perf_add_symlink_group()
781 * sink selection - see function coresight_get_sink_by_id(). in etm_perf_add_symlink_group()