Lines Matching refs:event
42 * width encoded in IP-related packets), and event configuration (bitmasks with
115 PMU_FORMAT_ATTR(event, "config:31" );
312 static bool pt_event_valid(struct perf_event *event)
314 u64 config = event->attr.config;
416 static void pt_config_start(struct perf_event *event)
419 u64 ctl = event->hw.config;
427 WRITE_ONCE(event->hw.config, ctl);
458 static u64 pt_config_filters(struct perf_event *event)
460 struct pt_filters *filters = event->hw.addr_filters;
468 perf_event_addr_filters_sync(event);
499 static void pt_config(struct perf_event *event)
506 if (!event->hw.config) {
507 perf_event_itrace_started(event);
511 reg = pt_config_filters(event);
519 * the user to disable it. Setting bit 0 in the event's attr.config
523 if (event->attr.config & BIT(0)) {
524 reg |= event->attr.config & RTIT_CTL_BRANCH_EN;
529 if (!event->attr.exclude_kernel)
531 if (!event->attr.exclude_user)
534 reg |= (event->attr.config & PT_CONFIG_MASK);
536 event->hw.config = reg;
537 pt_config_start(event);
540 static void pt_config_stop(struct perf_event *event)
543 u64 ctl = READ_ONCE(event->hw.config);
553 WRITE_ONCE(event->hw.config, ctl);
1295 pt_buffer_setup_aux(struct perf_event *event, void **pages,
1299 int node, ret, cpu = event->cpu;
1308 if (event->attr.aux_sample_size && !snapshot)
1351 static int pt_addr_filters_init(struct perf_event *event)
1354 int node = event->cpu == -1 ? -1 : cpu_to_node(event->cpu);
1363 if (event->parent)
1364 memcpy(filters, event->parent->hw.addr_filters,
1367 event->hw.addr_filters = filters;
1372 static void pt_addr_filters_fini(struct perf_event *event)
1374 kfree(event->hw.addr_filters);
1375 event->hw.addr_filters = NULL;
1420 static void pt_event_addr_filters_sync(struct perf_event *event)
1422 struct perf_addr_filters_head *head = perf_event_addr_filters(event);
1424 struct perf_addr_filter_range *fr = event->addr_filter_ranges;
1425 struct pt_filters *filters = event->hw.addr_filters;
1477 struct perf_event *event = pt->handle.event;
1482 * do anything (particularly, re-enable) for this event here.
1487 if (!event)
1490 pt_config_stop(event);
1504 if (!event->hw.state) {
1507 buf = perf_aux_output_begin(&pt->handle, event);
1509 event->hw.state = PERF_HES_STOPPED;
1522 pt_config_start(event);
1529 struct perf_event *event;
1549 event = pt->handle.event;
1550 if (event)
1555 if (!on && event)
1556 wrmsrl(MSR_IA32_RTIT_CTL, event->hw.config);
1566 static void pt_event_start(struct perf_event *event, int mode)
1568 struct hw_perf_event *hwc = &event->hw;
1572 buf = perf_aux_output_begin(&pt->handle, event);
1586 pt_config(event);
1596 static void pt_event_stop(struct perf_event *event, int mode)
1606 pt_config_stop(event);
1608 if (event->hw.state == PERF_HES_STOPPED)
1611 event->hw.state = PERF_HES_STOPPED;
1619 if (WARN_ON_ONCE(pt->handle.event != event))
1636 static long pt_event_snapshot_aux(struct perf_event *event,
1659 pt_config_stop(event);
1677 pt_config_start(event);
1682 static void pt_event_del(struct perf_event *event, int mode)
1684 pt_event_stop(event, PERF_EF_UPDATE);
1687 static int pt_event_add(struct perf_event *event, int mode)
1690 struct hw_perf_event *hwc = &event->hw;
1693 if (pt->handle.event)
1697 pt_event_start(event, 0);
1711 static void pt_event_read(struct perf_event *event)
1715 static void pt_event_destroy(struct perf_event *event)
1717 pt_addr_filters_fini(event);
1721 static int pt_event_init(struct perf_event *event)
1723 if (event->attr.type != pt_pmu.pmu.type)
1726 if (!pt_event_valid(event))
1732 if (pt_addr_filters_init(event)) {
1737 event->destroy = pt_event_destroy;
1746 if (pt->handle.event)
1747 pt_event_stop(pt->handle.event, PERF_EF_UPDATE);
1750 int is_intel_pt_event(struct perf_event *event)
1752 return event->pmu == &pt_pmu.pmu;