Lines Matching refs:event
287 static char *event_fmt(struct hv_24x7_event_data *event, unsigned domain) in event_fmt() argument
303 be16_to_cpu(event->event_counter_offs) + in event_fmt()
304 be16_to_cpu(event->event_group_record_offs), in event_fmt()
384 struct hv_24x7_event_data *event, in event_to_attr() argument
399 val = event_fmt(event, domain); in event_to_attr()
404 ev_name = event_name(event, &event_name_len); in event_to_attr()
427 static struct attribute *event_to_desc_attr(struct hv_24x7_event_data *event, in event_to_desc_attr() argument
431 char *name = event_name(event, &nl); in event_to_desc_attr()
432 char *desc = event_desc(event, &dl); in event_to_desc_attr()
442 event_to_long_desc_attr(struct hv_24x7_event_data *event, int nonce) in event_to_long_desc_attr() argument
445 char *name = event_name(event, &nl); in event_to_long_desc_attr()
446 char *desc = event_long_desc(event, &dl); in event_to_long_desc_attr()
456 struct hv_24x7_event_data *event, int nonce) in event_data_to_attrs() argument
460 switch (event->domain) { in event_data_to_attrs()
462 *attrs = event_to_attr(ix, event, event->domain, nonce); in event_data_to_attrs()
466 attrs[i] = event_to_attr(ix, event, core_domains[i], in event_data_to_attrs()
479 "catalog\n", ix, event->domain); in event_data_to_attrs()
484 static size_t event_to_attr_ct(struct hv_24x7_event_data *event) in event_to_attr_ct() argument
486 switch (event->domain) { in event_to_attr_ct()
604 static ssize_t catalog_event_len_validate(struct hv_24x7_event_data *event, in catalog_event_len_validate() argument
622 if (!event_fixed_portion_is_within(event, end)) { in catalog_event_len_validate()
628 ev_len = be16_to_cpu(event->length); in catalog_event_len_validate()
632 event_idx, ev_len, event); in catalog_event_len_validate()
634 ev_end = (__u8 *)event + ev_len; in catalog_event_len_validate()
642 calc_ev_end = event_end(event, end); in catalog_event_len_validate()
645 event_idx, event_data_bytes, event, end, in catalog_event_len_validate()
652 event_idx, event, ev_end, offset, calc_ev_end); in catalog_event_len_validate()
677 struct hv_24x7_event_data *event; in create_events_from_catalog() local
774 for (junk_events = 0, event = event_data, event_idx = 0, attr_max = 0; in create_events_from_catalog()
776 event_idx++, event = (void *)event + ev_len) { in create_events_from_catalog()
777 size_t offset = (void *)event - (void *)event_data; in create_events_from_catalog()
781 ev_len = catalog_event_len_validate(event, event_idx, in create_events_from_catalog()
788 name = event_name(event, &nl); in create_events_from_catalog()
790 if (event->event_group_record_len == 0) { in create_events_from_catalog()
797 if (!catalog_entry_domain_is_valid(event->domain)) { in create_events_from_catalog()
799 event_idx, nl, name, event->domain); in create_events_from_catalog()
804 attr_max += event_to_attr_ct(event); in create_events_from_catalog()
834 event = event_data, event_idx = 0; in create_events_from_catalog()
836 event_idx++, ev_len = be16_to_cpu(event->length), in create_events_from_catalog()
837 event = (void *)event + ev_len) { in create_events_from_catalog()
845 if (event->event_group_record_len == 0) in create_events_from_catalog()
847 if (!catalog_entry_domain_is_valid(event->domain)) in create_events_from_catalog()
850 name = event_name(event, &nl); in create_events_from_catalog()
851 nonce = event_uniq_add(&ev_uniq, name, nl, event->domain); in create_events_from_catalog()
853 event, nonce); in create_events_from_catalog()
860 event_descs[desc_ct] = event_to_desc_attr(event, nonce); in create_events_from_catalog()
864 event_to_long_desc_attr(event, nonce); in create_events_from_catalog()
1079 static int add_event_to_24x7_request(struct perf_event *event, in add_event_to_24x7_request() argument
1092 if (is_physical_domain(event_get_domain(event))) in add_event_to_24x7_request()
1093 idx = event_get_core(event); in add_event_to_24x7_request()
1095 idx = event_get_vcpu(event); in add_event_to_24x7_request()
1100 req->performance_domain = event_get_domain(event); in add_event_to_24x7_request()
1102 req->data_offset = cpu_to_be32(event_get_offset(event)); in add_event_to_24x7_request()
1103 req->starting_lpar_ix = cpu_to_be16(event_get_lpar(event)), in add_event_to_24x7_request()
1111 static unsigned long single_24x7_request(struct perf_event *event, u64 *count) in single_24x7_request() argument
1125 ret = add_event_to_24x7_request(event, request_buffer); in single_24x7_request()
1145 static int h_24x7_event_init(struct perf_event *event) in h_24x7_event_init() argument
1153 if (event->attr.type != event->pmu->type) in h_24x7_event_init()
1157 if (event_get_reserved1(event) || in h_24x7_event_init()
1158 event_get_reserved2(event) || in h_24x7_event_init()
1159 event_get_reserved3(event)) { in h_24x7_event_init()
1161 event->attr.config, in h_24x7_event_init()
1162 event_get_reserved1(event), in h_24x7_event_init()
1163 event->attr.config1, in h_24x7_event_init()
1164 event_get_reserved2(event), in h_24x7_event_init()
1165 event->attr.config2, in h_24x7_event_init()
1166 event_get_reserved3(event)); in h_24x7_event_init()
1171 if (event->attr.exclude_user || in h_24x7_event_init()
1172 event->attr.exclude_kernel || in h_24x7_event_init()
1173 event->attr.exclude_hv || in h_24x7_event_init()
1174 event->attr.exclude_idle || in h_24x7_event_init()
1175 event->attr.exclude_host || in h_24x7_event_init()
1176 event->attr.exclude_guest) in h_24x7_event_init()
1180 if (has_branch_stack(event)) in h_24x7_event_init()
1184 if (event_get_offset(event) % 8) { in h_24x7_event_init()
1190 domain = event_get_domain(event); in h_24x7_event_init()
1204 (event_get_lpar(event) != event_get_lpar_max()))) { in h_24x7_event_init()
1207 event_get_lpar(event)); in h_24x7_event_init()
1212 if (single_24x7_request(event, &ct)) { in h_24x7_event_init()
1220 static u64 h_24x7_get_value(struct perf_event *event) in h_24x7_get_value() argument
1224 ret = single_24x7_request(event, &ct); in h_24x7_get_value()
1232 static void update_event_count(struct perf_event *event, u64 now) in update_event_count() argument
1236 prev = local64_xchg(&event->hw.prev_count, now); in update_event_count()
1237 local64_add(now - prev, &event->count); in update_event_count()
1240 static void h_24x7_event_read(struct perf_event *event) in h_24x7_event_read() argument
1265 ret = add_event_to_24x7_request(event, request_buffer); in h_24x7_event_read()
1276 h24x7hw->events[i] = event; in h_24x7_event_read()
1282 now = h_24x7_get_value(event); in h_24x7_event_read()
1283 update_event_count(event, now); in h_24x7_event_read()
1287 static void h_24x7_event_start(struct perf_event *event, int flags) in h_24x7_event_start() argument
1290 local64_set(&event->hw.prev_count, h_24x7_get_value(event)); in h_24x7_event_start()
1293 static void h_24x7_event_stop(struct perf_event *event, int flags) in h_24x7_event_stop() argument
1295 h_24x7_event_read(event); in h_24x7_event_stop()
1298 static int h_24x7_event_add(struct perf_event *event, int flags) in h_24x7_event_add() argument
1301 h_24x7_event_start(event, flags); in h_24x7_event_add()
1359 struct perf_event *event; in h_24x7_event_commit_txn() local
1390 event = h24x7hw->events[i]; in h_24x7_event_commit_txn()
1392 update_event_count(event, count); in h_24x7_event_commit_txn()