Lines Matching refs:bts
177 static bool bts_buffer_is_full(struct bts_buffer *buf, struct bts_ctx *bts) in bts_buffer_is_full() argument
182 if (local_read(&buf->data_size) >= bts->handle.size || in bts_buffer_is_full()
183 bts->handle.size - local_read(&buf->data_size) < BTS_RECORD_SIZE) in bts_buffer_is_full()
189 static void bts_update(struct bts_ctx *bts) in bts_update() argument
193 struct bts_buffer *buf = perf_get_aux(&bts->handle); in bts_update()
221 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in __bts_event_start() local
222 struct bts_buffer *buf = perf_get_aux(&bts->handle); in __bts_event_start()
225 if (!buf || bts_buffer_is_full(buf, bts)) in __bts_event_start()
250 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_start() local
255 ACCESS_ONCE(bts->started) = 1; in bts_event_start()
274 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_stop() local
277 ACCESS_ONCE(bts->started) = 0; in bts_event_stop()
282 bts_update(bts); in bts_event_stop()
287 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in intel_bts_enable_local() local
289 if (bts->handle.event && bts->started) in intel_bts_enable_local()
290 __bts_event_start(bts->handle.event); in intel_bts_enable_local()
295 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in intel_bts_disable_local() local
297 if (bts->handle.event) in intel_bts_disable_local()
298 __bts_event_stop(bts->handle.event); in intel_bts_disable_local()
381 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in intel_bts_interrupt() local
382 struct perf_event *event = bts->handle.event; in intel_bts_interrupt()
387 if (!event || !bts->started) in intel_bts_interrupt()
390 buf = perf_get_aux(&bts->handle); in intel_bts_interrupt()
400 bts_update(bts); in intel_bts_interrupt()
406 perf_aux_output_end(&bts->handle, local_xchg(&buf->data_size, 0), in intel_bts_interrupt()
409 buf = perf_aux_output_begin(&bts->handle, event); in intel_bts_interrupt()
413 err = bts_buffer_reset(buf, &bts->handle); in intel_bts_interrupt()
415 perf_aux_output_end(&bts->handle, 0, false); in intel_bts_interrupt()
423 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_del() local
424 struct bts_buffer *buf = perf_get_aux(&bts->handle); in bts_event_del()
430 bts->handle.head = in bts_event_del()
433 perf_aux_output_end(&bts->handle, local_xchg(&buf->data_size, 0), in bts_event_del()
437 cpuc->ds->bts_index = bts->ds_back.bts_buffer_base; in bts_event_del()
438 cpuc->ds->bts_buffer_base = bts->ds_back.bts_buffer_base; in bts_event_del()
439 cpuc->ds->bts_absolute_maximum = bts->ds_back.bts_absolute_maximum; in bts_event_del()
440 cpuc->ds->bts_interrupt_threshold = bts->ds_back.bts_interrupt_threshold; in bts_event_del()
446 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_add() local
456 if (bts->handle.event) in bts_event_add()
459 buf = perf_aux_output_begin(&bts->handle, event); in bts_event_add()
463 ret = bts_buffer_reset(buf, &bts->handle); in bts_event_add()
465 perf_aux_output_end(&bts->handle, 0, false); in bts_event_add()
469 bts->ds_back.bts_buffer_base = cpuc->ds->bts_buffer_base; in bts_event_add()
470 bts->ds_back.bts_absolute_maximum = cpuc->ds->bts_absolute_maximum; in bts_event_add()
471 bts->ds_back.bts_interrupt_threshold = cpuc->ds->bts_interrupt_threshold; in bts_event_add()
517 if (!boot_cpu_has(X86_FEATURE_DTES64) || !x86_pmu.bts) in bts_init()