Lines Matching refs:event
41 struct perf_event *event; /* Perf event for sampling */ member
52 static void paicrypt_event_destroy(struct perf_event *event) in paicrypt_event_destroy() argument
54 struct paicrypt_map *cpump = per_cpu_ptr(&paicrypt_map, event->cpu); in paicrypt_event_destroy()
56 cpump->event = NULL; in paicrypt_event_destroy()
59 if (event->attr.sample_period) in paicrypt_event_destroy()
65 event->attr.config, event->cpu, cpump->sampler, in paicrypt_event_destroy()
89 static u64 paicrypt_getdata(struct perf_event *event, bool kernel) in paicrypt_getdata() argument
95 if (event->attr.config != PAI_CRYPTO_BASE) { in paicrypt_getdata()
97 event->attr.config - PAI_CRYPTO_BASE, in paicrypt_getdata()
111 static u64 paicrypt_getall(struct perf_event *event) in paicrypt_getall() argument
115 if (!event->attr.exclude_kernel) in paicrypt_getall()
116 sum += paicrypt_getdata(event, true); in paicrypt_getall()
117 if (!event->attr.exclude_user) in paicrypt_getall()
118 sum += paicrypt_getdata(event, false); in paicrypt_getall()
187 static int paicrypt_event_init(struct perf_event *event) in paicrypt_event_init() argument
189 struct perf_event_attr *a = &event->attr; in paicrypt_event_init()
194 if (a->type != PERF_TYPE_RAW && event->pmu->type != a->type) in paicrypt_event_init()
201 if (event->hw.target || event->cpu == -1) in paicrypt_event_init()
207 cpump = per_cpu_ptr(&paicrypt_map, event->cpu); in paicrypt_event_init()
217 event->hw.last_tag = 0; in paicrypt_event_init()
218 cpump->event = event; in paicrypt_event_init()
219 event->destroy = paicrypt_event_destroy; in paicrypt_event_init()
225 event->attach_state |= PERF_ATTACH_SCHED_CB; in paicrypt_event_init()
236 static void paicrypt_read(struct perf_event *event) in paicrypt_read() argument
240 prev = local64_read(&event->hw.prev_count); in paicrypt_read()
241 new = paicrypt_getall(event); in paicrypt_read()
242 local64_set(&event->hw.prev_count, new); in paicrypt_read()
245 local64_add(delta, &event->count); in paicrypt_read()
248 static void paicrypt_start(struct perf_event *event, int flags) in paicrypt_start() argument
252 if (!event->hw.last_tag) { in paicrypt_start()
253 event->hw.last_tag = 1; in paicrypt_start()
254 sum = paicrypt_getall(event); /* Get current value */ in paicrypt_start()
255 local64_set(&event->count, 0); in paicrypt_start()
256 local64_set(&event->hw.prev_count, sum); in paicrypt_start()
260 static int paicrypt_add(struct perf_event *event, int flags) in paicrypt_add() argument
270 cpump->event = event; in paicrypt_add()
271 if (flags & PERF_EF_START && !event->attr.sample_period) { in paicrypt_add()
273 paicrypt_start(event, PERF_EF_RELOAD); in paicrypt_add()
275 event->hw.state = 0; in paicrypt_add()
276 if (event->attr.sample_period) in paicrypt_add()
277 perf_sched_cb_inc(event->pmu); in paicrypt_add()
281 static void paicrypt_stop(struct perf_event *event, int flags) in paicrypt_stop() argument
283 paicrypt_read(event); in paicrypt_stop()
284 event->hw.state = PERF_HES_STOPPED; in paicrypt_stop()
287 static void paicrypt_del(struct perf_event *event, int flags) in paicrypt_del() argument
291 if (event->attr.sample_period) in paicrypt_del()
292 perf_sched_cb_dec(event->pmu); in paicrypt_del()
293 if (!event->attr.sample_period) in paicrypt_del()
295 paicrypt_stop(event, PERF_EF_UPDATE); in paicrypt_del()
332 struct perf_event *event = cpump->event; in paicrypt_push_sample() local
339 if (!cpump->event) /* No event active */ in paicrypt_push_sample()
342 cpump->event->attr.exclude_user, in paicrypt_push_sample()
343 cpump->event->attr.exclude_kernel); in paicrypt_push_sample()
351 perf_sample_data_init(&data, 0, event->hw.last_period); in paicrypt_push_sample()
352 if (event->attr.sample_type & PERF_SAMPLE_TID) { in paicrypt_push_sample()
356 if (event->attr.sample_type & PERF_SAMPLE_TIME) in paicrypt_push_sample()
357 data.time = event->clock(); in paicrypt_push_sample()
358 if (event->attr.sample_type & (PERF_SAMPLE_ID | PERF_SAMPLE_IDENTIFIER)) in paicrypt_push_sample()
359 data.id = event->id; in paicrypt_push_sample()
360 if (event->attr.sample_type & PERF_SAMPLE_CPU) { in paicrypt_push_sample()
364 if (event->attr.sample_type & PERF_SAMPLE_RAW) { in paicrypt_push_sample()
372 overflow = perf_event_overflow(event, &data, ®s); in paicrypt_push_sample()
373 perf_event_update_userpage(event); in paicrypt_push_sample()
407 PMU_FORMAT_ATTR(event, "config:0-63");