Lines Matching +full:x +full:- +full:rp

1 // SPDX-License-Identifier: GPL-2.0
77 const struct iio_root_port * const rp) in iio_root_port_show() argument
79 if (output && rp) in iio_root_port_show()
80 fprintf(output, "S%d-uncore_iio_%d<%04x:%02x>\n", in iio_root_port_show()
81 rp->die, rp->pmu_idx, rp->domain, rp->bus); in iio_root_port_show()
90 p->domain = domain; in iio_root_port_new()
91 p->bus = bus; in iio_root_port_new()
92 p->die = die; in iio_root_port_new()
93 p->pmu_idx = pmu_idx; in iio_root_port_new()
103 for (idx = 0; idx < list->nr_entries; idx++) in iio_root_ports_list_free()
104 zfree(&list->rps[idx]); in iio_root_ports_list_free()
105 zfree(&list->rps); in iio_root_ports_list_free()
114 struct iio_root_port *rp; in iio_root_port_find_by_notation() local
117 for (idx = 0; idx < list->nr_entries; idx++) { in iio_root_port_find_by_notation()
118 rp = list->rps[idx]; in iio_root_port_find_by_notation()
119 if (rp && rp->domain == domain && rp->bus == bus) in iio_root_port_find_by_notation()
120 return rp; in iio_root_port_find_by_notation()
127 struct iio_root_port * const rp) in iio_root_ports_list_insert() argument
131 if (list && rp) { in iio_root_ports_list_insert()
132 rp->idx = list->nr_entries++; in iio_root_ports_list_insert()
133 tmp_buf = realloc(list->rps, in iio_root_ports_list_insert()
134 list->nr_entries * sizeof(*list->rps)); in iio_root_ports_list_insert()
137 return -ENOMEM; in iio_root_ports_list_insert()
139 tmp_buf[rp->idx] = rp; in iio_root_ports_list_insert()
140 list->rps = tmp_buf; in iio_root_ports_list_insert()
151 struct iio_root_port *rp; in iio_mapping() local
161 return -1; in iio_mapping()
163 ret = sscanf(buf, "%04x:%02hhx", &domain, &bus); in iio_mapping()
168 return -1; in iio_mapping()
170 rp = iio_root_port_new(domain, bus, die, pmu_idx); in iio_mapping()
171 if (!rp || iio_root_ports_list_insert(list, rp)) { in iio_mapping()
172 free(rp); in iio_mapping()
173 return -ENOMEM; in iio_mapping()
199 int ret = -ENOMEM; in iio_root_ports_scan()
205 return -1; in iio_root_ports_scan()
236 regcomp(&regex, "^([a-f0-9A-F]{1,}):([a-f0-9A-F]{1,2})", REG_EXTENDED); in iio_root_port_parse_str()
238 if (ret || sscanf(str, "%08x:%02hhx", domain, bus) != 2) in iio_root_port_parse_str()
252 struct iio_root_port *rp; in iio_root_ports_list_filter() local
255 int ret = -ENOMEM; in iio_root_ports_list_filter()
268 rp = iio_root_port_find_by_notation(*list, domain, bus); in iio_root_ports_list_filter()
269 if (rp) { in iio_root_ports_list_filter()
270 (*list)->rps[rp->idx] = NULL; in iio_root_ports_list_filter()
271 ret = iio_root_ports_list_insert(tmp_list, rp); in iio_root_ports_list_filter()
273 free(rp); in iio_root_ports_list_filter()
278 pr_warning("Root port %04x:%02x were not found\n", in iio_root_ports_list_filter()
283 if (tmp_list->nr_entries == 0) { in iio_root_ports_list_filter()
285 ret = -EINVAL; in iio_root_ports_list_filter()
304 "{uncore_iio_%x/event=0x83,umask=0x04,ch_mask=0xF,fc_mask=0x07/,\ in iostat_event_group()
305 uncore_iio_%x/event=0x83,umask=0x01,ch_mask=0xF,fc_mask=0x07/,\ in iostat_event_group()
306 uncore_iio_%x/event=0xc0,umask=0x04,ch_mask=0xF,fc_mask=0x07/,\ in iostat_event_group()
307 uncore_iio_%x/event=0xc0,umask=0x01,ch_mask=0xF,fc_mask=0x07/}"; in iostat_event_group()
314 return -ENOMEM; in iostat_event_group()
316 for (idx = 0; idx < list->nr_entries; idx++) { in iostat_event_group()
318 list->rps[idx]->pmu_idx, list->rps[idx]->pmu_idx, in iostat_event_group()
319 list->rps[idx]->pmu_idx, list->rps[idx]->pmu_idx); in iostat_event_group()
326 evsel->priv = list->rps[evsel->core.idx / metrics_count]; in iostat_event_group()
328 list->nr_entries = 0; in iostat_event_group()
337 if (evlist->core.nr_entries > 0) { in iostat_prepare()
338 pr_warning("The -e and -M options are not supported." in iostat_prepare()
343 return -ENOMEM; in iostat_prepare()
346 config->metric_only = true; in iostat_prepare()
347 config->aggr_mode = AGGR_GLOBAL; in iostat_prepare()
356 struct perf_stat_config *config = (struct perf_stat_config *)opt->data; in iostat_parse()
360 config->iostat_run = true; in iostat_parse()
376 struct iio_root_port *rp = NULL; in iostat_list() local
379 if (rp != evsel->priv) { in iostat_list()
380 rp = evsel->priv; in iostat_list()
381 iio_root_port_show(config->output, rp); in iostat_list()
389 struct iio_root_port *rp = NULL; in iostat_release() local
392 if (rp != evsel->priv) { in iostat_release()
393 rp = evsel->priv; in iostat_release()
394 zfree(&evsel->priv); in iostat_release()
403 struct iio_root_port *rp = evlist->selected->priv; in iostat_prefix() local
405 if (rp) { in iostat_prefix()
407 sprintf(prefix, "%6lu.%09lu%s%04x:%02x%s", in iostat_prefix()
408 ts->tv_sec, ts->tv_nsec, in iostat_prefix()
409 config->csv_sep, rp->domain, rp->bus, in iostat_prefix()
410 config->csv_sep); in iostat_prefix()
412 sprintf(prefix, "%04x:%02x%s", rp->domain, rp->bus, in iostat_prefix()
413 config->csv_sep); in iostat_prefix()
419 if (config->csv_output) in iostat_print_header_prefix()
420 fputs("port,", config->output); in iostat_print_header_prefix()
421 else if (config->interval) in iostat_print_header_prefix()
422 fprintf(config->output, "# time port "); in iostat_print_header_prefix()
424 fprintf(config->output, " port "); in iostat_print_header_prefix()
432 const char *iostat_metric = iostat_metric_by_idx(evsel->core.idx); in iostat_print_metric()
433 u8 die = ((struct iio_root_port *)evsel->priv)->die; in iostat_print_metric()
434 struct perf_counts_values *count = perf_counts(evsel->counts, die, 0); in iostat_print_metric()
436 if (count && count->run && count->ena) { in iostat_print_metric()
437 if (evsel->prev_raw_counts && !out->force_header) { in iostat_print_metric()
439 perf_counts(evsel->prev_raw_counts, die, 0); in iostat_print_metric()
441 prev_count_val = prev_count->val; in iostat_print_metric()
442 prev_count->val = count->val; in iostat_print_metric()
444 iostat_value = (count->val - prev_count_val) / in iostat_print_metric()
445 ((double) count->run / count->ena); in iostat_print_metric()
447 out->print_metric(config, out->ctx, NULL, "%8.0f", iostat_metric, in iostat_print_metric()
460 fprintf(config->output, "%s", prefix); in iostat_print_counters()
462 perf_device = evlist->selected->priv; in iostat_print_counters()
463 if (perf_device && perf_device != counter->priv) { in iostat_print_counters()
466 fprintf(config->output, "\n%s", prefix); in iostat_print_counters()
470 fputc('\n', config->output); in iostat_print_counters()