Lines Matching +full:x +full:- +full:rp
1 // SPDX-License-Identifier: GPL-2.0
76 const struct iio_root_port * const rp) in iio_root_port_show() argument
78 if (output && rp) in iio_root_port_show()
79 fprintf(output, "S%d-uncore_iio_%d<%04x:%02x>\n", in iio_root_port_show()
80 rp->die, rp->pmu_idx, rp->domain, rp->bus); in iio_root_port_show()
89 p->domain = domain; in iio_root_port_new()
90 p->bus = bus; in iio_root_port_new()
91 p->die = die; in iio_root_port_new()
92 p->pmu_idx = pmu_idx; in iio_root_port_new()
102 for (idx = 0; idx < list->nr_entries; idx++) in iio_root_ports_list_free()
103 free(list->rps[idx]); in iio_root_ports_list_free()
104 free(list->rps); in iio_root_ports_list_free()
113 struct iio_root_port *rp; in iio_root_port_find_by_notation() local
116 for (idx = 0; idx < list->nr_entries; idx++) { in iio_root_port_find_by_notation()
117 rp = list->rps[idx]; in iio_root_port_find_by_notation()
118 if (rp && rp->domain == domain && rp->bus == bus) in iio_root_port_find_by_notation()
119 return rp; in iio_root_port_find_by_notation()
126 struct iio_root_port * const rp) in iio_root_ports_list_insert() argument
130 if (list && rp) { in iio_root_ports_list_insert()
131 rp->idx = list->nr_entries++; in iio_root_ports_list_insert()
132 tmp_buf = realloc(list->rps, in iio_root_ports_list_insert()
133 list->nr_entries * sizeof(*list->rps)); in iio_root_ports_list_insert()
136 return -ENOMEM; in iio_root_ports_list_insert()
138 tmp_buf[rp->idx] = rp; in iio_root_ports_list_insert()
139 list->rps = tmp_buf; in iio_root_ports_list_insert()
150 struct iio_root_port *rp; in iio_mapping() local
160 return -1; in iio_mapping()
162 ret = sscanf(buf, "%04x:%02hhx", &domain, &bus); in iio_mapping()
167 return -1; in iio_mapping()
169 rp = iio_root_port_new(domain, bus, die, pmu_idx); in iio_mapping()
170 if (!rp || iio_root_ports_list_insert(list, rp)) { in iio_mapping()
171 free(rp); in iio_mapping()
172 return -ENOMEM; in iio_mapping()
198 int ret = -ENOMEM; in iio_root_ports_scan()
204 return -1; in iio_root_ports_scan()
235 regcomp(®ex, "^([a-f0-9A-F]{1,}):([a-f0-9A-F]{1,2})", REG_EXTENDED); in iio_root_port_parse_str()
237 if (ret || sscanf(str, "%08x:%02hhx", domain, bus) != 2) in iio_root_port_parse_str()
251 struct iio_root_port *rp; in iio_root_ports_list_filter() local
254 int ret = -ENOMEM; in iio_root_ports_list_filter()
267 rp = iio_root_port_find_by_notation(*list, domain, bus); in iio_root_ports_list_filter()
268 if (rp) { in iio_root_ports_list_filter()
269 (*list)->rps[rp->idx] = NULL; in iio_root_ports_list_filter()
270 ret = iio_root_ports_list_insert(tmp_list, rp); in iio_root_ports_list_filter()
272 free(rp); in iio_root_ports_list_filter()
277 pr_warning("Root port %04x:%02x were not found\n", in iio_root_ports_list_filter()
282 if (tmp_list->nr_entries == 0) { in iio_root_ports_list_filter()
284 ret = -EINVAL; in iio_root_ports_list_filter()
303 "{uncore_iio_%x/event=0x83,umask=0x04,ch_mask=0xF,fc_mask=0x07/,\ in iostat_event_group()
304 uncore_iio_%x/event=0x83,umask=0x01,ch_mask=0xF,fc_mask=0x07/,\ in iostat_event_group()
305 uncore_iio_%x/event=0xc0,umask=0x04,ch_mask=0xF,fc_mask=0x07/,\ in iostat_event_group()
306 uncore_iio_%x/event=0xc0,umask=0x01,ch_mask=0xF,fc_mask=0x07/}"; in iostat_event_group()
313 return -ENOMEM; in iostat_event_group()
315 for (idx = 0; idx < list->nr_entries; idx++) { in iostat_event_group()
317 list->rps[idx]->pmu_idx, list->rps[idx]->pmu_idx, in iostat_event_group()
318 list->rps[idx]->pmu_idx, list->rps[idx]->pmu_idx); in iostat_event_group()
325 evsel->priv = list->rps[evsel->core.idx / metrics_count]; in iostat_event_group()
327 list->nr_entries = 0; in iostat_event_group()
336 if (evlist->core.nr_entries > 0) { in iostat_prepare()
337 pr_warning("The -e and -M options are not supported." in iostat_prepare()
342 return -ENOMEM; in iostat_prepare()
345 config->metric_only = true; in iostat_prepare()
346 config->aggr_mode = AGGR_GLOBAL; in iostat_prepare()
355 struct perf_stat_config *config = (struct perf_stat_config *)opt->data; in iostat_parse()
359 config->iostat_run = true; in iostat_parse()
375 struct iio_root_port *rp = NULL; in iostat_list() local
378 if (rp != evsel->priv) { in iostat_list()
379 rp = evsel->priv; in iostat_list()
380 iio_root_port_show(config->output, rp); in iostat_list()
388 struct iio_root_port *rp = NULL; in iostat_release() local
391 if (rp != evsel->priv) { in iostat_release()
392 rp = evsel->priv; in iostat_release()
393 free(evsel->priv); in iostat_release()
402 struct iio_root_port *rp = evlist->selected->priv; in iostat_prefix() local
404 if (rp) { in iostat_prefix()
406 sprintf(prefix, "%6lu.%09lu%s%04x:%02x%s", in iostat_prefix()
407 ts->tv_sec, ts->tv_nsec, in iostat_prefix()
408 config->csv_sep, rp->domain, rp->bus, in iostat_prefix()
409 config->csv_sep); in iostat_prefix()
411 sprintf(prefix, "%04x:%02x%s", rp->domain, rp->bus, in iostat_prefix()
412 config->csv_sep); in iostat_prefix()
418 if (config->csv_output) in iostat_print_header_prefix()
419 fputs("port,", config->output); in iostat_print_header_prefix()
420 else if (config->interval) in iostat_print_header_prefix()
421 fprintf(config->output, "# time port "); in iostat_print_header_prefix()
423 fprintf(config->output, " port "); in iostat_print_header_prefix()
431 const char *iostat_metric = iostat_metric_by_idx(evsel->core.idx); in iostat_print_metric()
432 u8 die = ((struct iio_root_port *)evsel->priv)->die; in iostat_print_metric()
433 struct perf_counts_values *count = perf_counts(evsel->counts, die, 0); in iostat_print_metric()
435 if (count && count->run && count->ena) { in iostat_print_metric()
436 if (evsel->prev_raw_counts && !out->force_header) { in iostat_print_metric()
438 perf_counts(evsel->prev_raw_counts, die, 0); in iostat_print_metric()
440 prev_count_val = prev_count->val; in iostat_print_metric()
441 prev_count->val = count->val; in iostat_print_metric()
443 iostat_value = (count->val - prev_count_val) / in iostat_print_metric()
444 ((double) count->run / count->ena); in iostat_print_metric()
446 out->print_metric(config, out->ctx, NULL, "%8.0f", iostat_metric, in iostat_print_metric()
459 fprintf(config->output, "%s", prefix); in iostat_print_counters()
461 perf_device = evlist->selected->priv; in iostat_print_counters()
462 if (perf_device && perf_device != counter->priv) { in iostat_print_counters()
465 fprintf(config->output, "\n%s", prefix); in iostat_print_counters()
469 fputc('\n', config->output); in iostat_print_counters()