Lines Matching refs:event

60 	struct perf_event *event;	/* Perf event for sampling */  member
124 static void paiext_event_destroy(struct perf_event *event) in paiext_event_destroy() argument
126 struct paiext_mapptr *mp = per_cpu_ptr(paiext_root.mapptr, event->cpu); in paiext_event_destroy()
130 cpump->event = NULL; in paiext_event_destroy()
136 event->cpu, mp->mapptr); in paiext_event_destroy()
154 static int paiext_alloc(struct perf_event_attr *a, struct perf_event *event) in paiext_alloc() argument
166 mp = per_cpu_ptr(paiext_root.mapptr, event->cpu); in paiext_alloc()
209 cpump->event = event; in paiext_alloc()
229 static int paiext_event_valid(struct perf_event *event) in paiext_event_valid() argument
231 u64 cfg = event->attr.config; in paiext_event_valid()
235 event->hw.config_base = offsetof(struct paiext_cb, acc); in paiext_event_valid()
242 static int paiext_event_init(struct perf_event *event) in paiext_event_init() argument
244 struct perf_event_attr *a = &event->attr; in paiext_event_init()
248 if (a->type != PERF_TYPE_RAW && event->pmu->type != a->type) in paiext_event_init()
251 rc = paiext_event_valid(event); in paiext_event_init()
255 if (event->hw.target || event->cpu == -1) in paiext_event_init()
264 rc = paiext_alloc(a, event); in paiext_event_init()
267 event->hw.last_tag = 0; in paiext_event_init()
268 event->destroy = paiext_event_destroy; in paiext_event_init()
274 event->attach_state |= PERF_ATTACH_SCHED_CB; in paiext_event_init()
292 static u64 paiext_getdata(struct perf_event *event) in paiext_getdata() argument
299 if (event->attr.config != PAI_NNPA_BASE) in paiext_getdata()
300 return paiext_getctr(cpump, event->attr.config - PAI_NNPA_BASE); in paiext_getdata()
308 static u64 paiext_getall(struct perf_event *event) in paiext_getall() argument
310 return paiext_getdata(event); in paiext_getall()
313 static void paiext_read(struct perf_event *event) in paiext_read() argument
317 prev = local64_read(&event->hw.prev_count); in paiext_read()
318 new = paiext_getall(event); in paiext_read()
319 local64_set(&event->hw.prev_count, new); in paiext_read()
321 local64_add(delta, &event->count); in paiext_read()
324 static void paiext_start(struct perf_event *event, int flags) in paiext_start() argument
328 if (event->hw.last_tag) in paiext_start()
330 event->hw.last_tag = 1; in paiext_start()
331 sum = paiext_getall(event); /* Get current value */ in paiext_start()
332 local64_set(&event->hw.prev_count, sum); in paiext_start()
333 local64_set(&event->count, 0); in paiext_start()
336 static int paiext_add(struct perf_event *event, int flags) in paiext_add() argument
350 if (flags & PERF_EF_START && !event->attr.sample_period) { in paiext_add()
352 paiext_start(event, PERF_EF_RELOAD); in paiext_add()
354 event->hw.state = 0; in paiext_add()
355 if (event->attr.sample_period) { in paiext_add()
356 cpump->event = event; in paiext_add()
357 perf_sched_cb_inc(event->pmu); in paiext_add()
362 static void paiext_stop(struct perf_event *event, int flags) in paiext_stop() argument
364 paiext_read(event); in paiext_stop()
365 event->hw.state = PERF_HES_STOPPED; in paiext_stop()
368 static void paiext_del(struct perf_event *event, int flags) in paiext_del() argument
374 if (event->attr.sample_period) in paiext_del()
375 perf_sched_cb_dec(event->pmu); in paiext_del()
376 if (!event->attr.sample_period) { in paiext_del()
378 paiext_stop(event, PERF_EF_UPDATE); in paiext_del()
431 struct perf_event *event = cpump->event; in paiext_push_sample() local
446 perf_sample_data_init(&data, 0, event->hw.last_period); in paiext_push_sample()
447 if (event->attr.sample_type & PERF_SAMPLE_TID) { in paiext_push_sample()
451 if (event->attr.sample_type & PERF_SAMPLE_TIME) in paiext_push_sample()
452 data.time = event->clock(); in paiext_push_sample()
453 if (event->attr.sample_type & (PERF_SAMPLE_ID | PERF_SAMPLE_IDENTIFIER)) in paiext_push_sample()
454 data.id = event->id; in paiext_push_sample()
455 if (event->attr.sample_type & PERF_SAMPLE_CPU) in paiext_push_sample()
457 if (event->attr.sample_type & PERF_SAMPLE_RAW) { in paiext_push_sample()
465 overflow = perf_event_overflow(event, &data, &regs); in paiext_push_sample()
466 perf_event_update_userpage(event); in paiext_push_sample()
502 PMU_FORMAT_ATTR(event, "config:0-63");