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 */
199 struct coresight_device *sink; in free_sink_buffer() local
208 sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu)); in free_sink_buffer()
209 sink_ops(sink)->free_buffer(event_data->snk_config); in free_sink_buffer()
221 /* Free the sink buffers, if there are any */ in free_event_data()
289 * so that they can use the same sink buffers, when an event
313 struct coresight_device *sink = NULL; in etm_setup_aux() local
322 /* First get the selected sink from user space. */ in etm_setup_aux()
325 sink = user_sink = coresight_get_sink_by_id(id); in etm_setup_aux()
364 * No sink provided - look for a default sink for all the ETMs, in etm_setup_aux()
366 * We allocate the sink specific buffers only once for this in etm_setup_aux()
367 * event. If the ETMs have different default sink devices, we in etm_setup_aux()
368 * can only use a single "type" of sink as the event can carry in etm_setup_aux()
369 * only one sink specific buffer. Thus we have to make sure in etm_setup_aux()
372 * we choose the first sink and check if the remaining ETMs in etm_setup_aux()
373 * have a compatible default sink. We don't trace on a CPU in etm_setup_aux()
374 * if the sink is not compatible. in etm_setup_aux()
377 /* Find the default sink for this ETM */ in etm_setup_aux()
378 sink = coresight_find_default_sink(csdev); in etm_setup_aux()
379 if (!sink) { in etm_setup_aux()
384 /* Check if this sink compatible with the last sink */ in etm_setup_aux()
385 if (last_sink && !sinks_compatible(last_sink, sink)) { in etm_setup_aux()
389 last_sink = sink; in etm_setup_aux()
394 * list of devices from source to sink that can be in etm_setup_aux()
397 path = coresight_build_path(csdev, sink); in etm_setup_aux()
414 /* no sink found for any CPU - cannot trace */ in etm_setup_aux()
415 if (!sink) in etm_setup_aux()
423 if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer) in etm_setup_aux()
427 * Allocate the sink buffer for this session. All the sinks in etm_setup_aux()
429 * same type. Thus the same sink configuration is used by the in etm_setup_aux()
433 sink_ops(sink)->alloc_buffer(sink, event, pages, in etm_setup_aux()
453 struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu); in etm_event_start() local
475 * sink from this ETM. We can't do much in this case if in etm_event_start()
476 * the sink was specified or hinted to the driver. For in etm_event_start()
482 * reachable to a sink. in etm_event_start()
488 /* We need a sink, no need to continue without one */ in etm_event_start()
489 sink = coresight_get_sink(path); in etm_event_start()
490 if (WARN_ON_ONCE(!sink)) in etm_event_start()
526 * to handle cases where if the sink failed to start the in etm_event_start()
542 struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu); in etm_event_stop() local
587 sink = coresight_get_sink(path); in etm_event_stop()
588 if (!sink) in etm_event_stop()
599 * (e.g, the sink driver was unable to restart the in etm_event_stop()
608 if (!sink_ops(sink)->update_buffer) in etm_event_stop()
611 size = sink_ops(sink)->update_buffer(sink, handle, in etm_event_stop()
615 * sink could have closed it from an IRQ. in etm_event_stop()
616 * The sink driver must handle the race with in etm_event_stop()
782 * If this function is called adding a sink then the hash is used for in etm_perf_add_symlink_group()
783 * sink selection - see function coresight_get_sink_by_id(). in etm_perf_add_symlink_group()