Lines Matching refs:bts

174 static bool bts_buffer_is_full(struct bts_buffer *buf, struct bts_ctx *bts)  in bts_buffer_is_full()  argument
179 if (local_read(&buf->data_size) >= bts->handle.size || in bts_buffer_is_full()
180 bts->handle.size - local_read(&buf->data_size) < BTS_RECORD_SIZE) in bts_buffer_is_full()
186 static void bts_update(struct bts_ctx *bts) in bts_update() argument
190 struct bts_buffer *buf = perf_get_aux(&bts->handle); in bts_update()
218 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in __bts_event_start() local
219 struct bts_buffer *buf = perf_get_aux(&bts->handle); in __bts_event_start()
222 if (!buf || bts_buffer_is_full(buf, bts)) in __bts_event_start()
248 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_start() local
253 ACCESS_ONCE(bts->started) = 1; in bts_event_start()
272 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_stop() local
275 ACCESS_ONCE(bts->started) = 0; in bts_event_stop()
280 bts_update(bts); in bts_event_stop()
285 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in intel_bts_enable_local() local
287 if (bts->handle.event && bts->started) in intel_bts_enable_local()
288 __bts_event_start(bts->handle.event); in intel_bts_enable_local()
293 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in intel_bts_disable_local() local
295 if (bts->handle.event) in intel_bts_disable_local()
296 __bts_event_stop(bts->handle.event); in intel_bts_disable_local()
379 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in intel_bts_interrupt() local
380 struct perf_event *event = bts->handle.event; in intel_bts_interrupt()
385 if (!event || !bts->started) in intel_bts_interrupt()
388 buf = perf_get_aux(&bts->handle); in intel_bts_interrupt()
398 bts_update(bts); in intel_bts_interrupt()
404 perf_aux_output_end(&bts->handle, local_xchg(&buf->data_size, 0), in intel_bts_interrupt()
407 buf = perf_aux_output_begin(&bts->handle, event); in intel_bts_interrupt()
411 err = bts_buffer_reset(buf, &bts->handle); in intel_bts_interrupt()
413 perf_aux_output_end(&bts->handle, 0, false); in intel_bts_interrupt()
421 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_del() local
422 struct bts_buffer *buf = perf_get_aux(&bts->handle); in bts_event_del()
428 bts->handle.head = in bts_event_del()
431 perf_aux_output_end(&bts->handle, local_xchg(&buf->data_size, 0), in bts_event_del()
435 cpuc->ds->bts_index = bts->ds_back.bts_buffer_base; in bts_event_del()
436 cpuc->ds->bts_buffer_base = bts->ds_back.bts_buffer_base; in bts_event_del()
437 cpuc->ds->bts_absolute_maximum = bts->ds_back.bts_absolute_maximum; in bts_event_del()
438 cpuc->ds->bts_interrupt_threshold = bts->ds_back.bts_interrupt_threshold; in bts_event_del()
444 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); in bts_event_add() local
454 if (bts->handle.event) in bts_event_add()
457 buf = perf_aux_output_begin(&bts->handle, event); in bts_event_add()
461 ret = bts_buffer_reset(buf, &bts->handle); in bts_event_add()
463 perf_aux_output_end(&bts->handle, 0, false); in bts_event_add()
467 bts->ds_back.bts_buffer_base = cpuc->ds->bts_buffer_base; in bts_event_add()
468 bts->ds_back.bts_absolute_maximum = cpuc->ds->bts_absolute_maximum; in bts_event_add()
469 bts->ds_back.bts_interrupt_threshold = cpuc->ds->bts_interrupt_threshold; in bts_event_add()
528 if (!boot_cpu_has(X86_FEATURE_DTES64) || !x86_pmu.bts) in bts_init()