Lines Matching full:sink

32  * the trace path and the sink configuration. The event data is accessible
33 * via perf_get_aux(handle). However, a sink could "end" a perf output
34 * handle via the IRQ handler. And if the "sink" encounters a failure
63 /* preset - if sink ID is used as a configuration selector */
65 /* Sink ID - same for all ETMs */
195 struct coresight_device *sink; in free_sink_buffer() local
204 sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu)); in free_sink_buffer()
205 sink_ops(sink)->free_buffer(event_data->snk_config); in free_sink_buffer()
217 /* Free the sink buffers, if there are any */ in free_event_data()
281 * so that they can use the same sink buffers, when an event
304 struct coresight_device *sink = NULL; in etm_setup_aux() local
313 /* First get the selected sink from user space. */ in etm_setup_aux()
316 sink = user_sink = coresight_get_sink_by_id(id); in etm_setup_aux()
352 * No sink provided - look for a default sink for all the ETMs, in etm_setup_aux()
354 * We allocate the sink specific buffers only once for this in etm_setup_aux()
355 * event. If the ETMs have different default sink devices, we in etm_setup_aux()
356 * can only use a single "type" of sink as the event can carry in etm_setup_aux()
357 * only one sink specific buffer. Thus we have to make sure in etm_setup_aux()
360 * we choose the first sink and check if the remaining ETMs in etm_setup_aux()
361 * have a compatible default sink. We don't trace on a CPU in etm_setup_aux()
362 * if the sink is not compatible. in etm_setup_aux()
365 /* Find the default sink for this ETM */ in etm_setup_aux()
366 sink = coresight_find_default_sink(csdev); in etm_setup_aux()
367 if (!sink) { in etm_setup_aux()
372 /* Check if this sink compatible with the last sink */ in etm_setup_aux()
373 if (last_sink && !sinks_compatible(last_sink, sink)) { in etm_setup_aux()
377 last_sink = sink; in etm_setup_aux()
382 * list of devices from source to sink that can be in etm_setup_aux()
385 path = coresight_build_path(csdev, sink); in etm_setup_aux()
394 /* no sink found for any CPU - cannot trace */ in etm_setup_aux()
395 if (!sink) in etm_setup_aux()
403 if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer) in etm_setup_aux()
407 * Allocate the sink buffer for this session. All the sinks in etm_setup_aux()
409 * same type. Thus the same sink configuration is used by the in etm_setup_aux()
413 sink_ops(sink)->alloc_buffer(sink, event, pages, in etm_setup_aux()
433 struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu); in etm_event_start() local
454 * sink from this ETM. We can't do much in this case if in etm_event_start()
455 * the sink was specified or hinted to the driver. For in etm_event_start()
461 * reachable to a sink. in etm_event_start()
467 /* We need a sink, no need to continue without one */ in etm_event_start()
468 sink = coresight_get_sink(path); in etm_event_start()
469 if (WARN_ON_ONCE(!sink)) in etm_event_start()
492 * to handle cases where if the sink failed to start the in etm_event_start()
508 struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu); in etm_event_stop() local
553 sink = coresight_get_sink(path); in etm_event_stop()
554 if (!sink) in etm_event_stop()
565 * (e.g, the sink driver was unable to restart the in etm_event_stop()
574 if (!sink_ops(sink)->update_buffer) in etm_event_stop()
577 size = sink_ops(sink)->update_buffer(sink, handle, in etm_event_stop()
581 * sink could have closed it from an IRQ. in etm_event_stop()
582 * The sink driver must handle the race with in etm_event_stop()
748 * If this function is called adding a sink then the hash is used for in etm_perf_add_symlink_group()
749 * sink selection - see function coresight_get_sink_by_id(). in etm_perf_add_symlink_group()