diff options
Diffstat (limited to 'tools/perf/arch/x86/util')
-rw-r--r-- | tools/perf/arch/x86/util/evlist.c | 42 | ||||
-rw-r--r-- | tools/perf/arch/x86/util/iostat.c | 2 | ||||
-rw-r--r-- | tools/perf/arch/x86/util/topdown.c | 2 | ||||
-rw-r--r-- | tools/perf/arch/x86/util/unwind-libdw.c | 2 |
4 files changed, 18 insertions, 30 deletions
diff --git a/tools/perf/arch/x86/util/evlist.c b/tools/perf/arch/x86/util/evlist.c index 447a734e591c..1969758cc8c1 100644 --- a/tools/perf/arch/x86/util/evlist.c +++ b/tools/perf/arch/x86/util/evlist.c @@ -39,28 +39,13 @@ int arch_evlist__cmp(const struct evsel *lhs, const struct evsel *rhs) * 26,319,024 slots * 2,427,791 instructions * 2,683,508 topdown-retiring - * - * If slots event and topdown metrics events are not in same group, the - * topdown metrics events must be first event after the slots event group, - * otherwise topdown metrics events can't be regrouped correctly, e.g. - * - * a. perf stat -e "{instructions,slots},cycles,topdown-retiring" -C0 sleep 1 + * e. slots event and metrics event are not in a group and not adjacent + * perf stat -e "{instructions,slots},cycles,topdown-retiring" -C0 sleep 1 * WARNING: events were regrouped to match PMUs - * Performance counter stats for 'CPU(s) 0': - * 17,923,134 slots - * 2,154,855 instructions - * 3,015,058 cycles - * <not supported> topdown-retiring - * - * If slots event and topdown metrics events are in two groups, the group which - * has topdown metrics events must contain only the topdown metrics event, - * otherwise topdown metrics event can't be regrouped correctly as well, e.g. - * - * a. perf stat -e "{instructions,slots},{topdown-retiring,cycles}" -C0 sleep 1 - * WARNING: events were regrouped to match PMUs - * Error: - * The sys_perf_event_open() syscall returned with 22 (Invalid argument) for - * event (topdown-retiring) + * 68,433,522 slots + * 8,856,102 topdown-retiring + * 7,791,494 instructions + * 11,469,513 cycles */ if (topdown_sys_has_perf_metrics() && (arch_evsel__must_be_in_group(lhs) || arch_evsel__must_be_in_group(rhs))) { @@ -76,12 +61,15 @@ int arch_evlist__cmp(const struct evsel *lhs, const struct evsel *rhs) * topdown metrics events are already in same group with slots * event, do nothing. */ - if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs) && - lhs->core.leader != rhs->core.leader) - return -1; - if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs) && - lhs->core.leader != rhs->core.leader) - return 1; + if (lhs->core.leader != rhs->core.leader) { + bool lhs_topdown = arch_is_topdown_metrics(lhs); + bool rhs_topdown = arch_is_topdown_metrics(rhs); + + if (lhs_topdown && !rhs_topdown) + return -1; + if (!lhs_topdown && rhs_topdown) + return 1; + } } /* Retire latency event should not be group leader*/ diff --git a/tools/perf/arch/x86/util/iostat.c b/tools/perf/arch/x86/util/iostat.c index 00f645a0c18a..7442a2cd87ed 100644 --- a/tools/perf/arch/x86/util/iostat.c +++ b/tools/perf/arch/x86/util/iostat.c @@ -32,7 +32,7 @@ #define MAX_PATH 1024 #endif -#define UNCORE_IIO_PMU_PATH "devices/uncore_iio_%d" +#define UNCORE_IIO_PMU_PATH "bus/event_source/devices/uncore_iio_%d" #define SYSFS_UNCORE_PMU_PATH "%s/"UNCORE_IIO_PMU_PATH #define PLATFORM_MAPPING_PATH UNCORE_IIO_PMU_PATH"/die%d" diff --git a/tools/perf/arch/x86/util/topdown.c b/tools/perf/arch/x86/util/topdown.c index f63747d0abdf..d1c654839049 100644 --- a/tools/perf/arch/x86/util/topdown.c +++ b/tools/perf/arch/x86/util/topdown.c @@ -81,7 +81,7 @@ bool arch_topdown_sample_read(struct evsel *leader) */ evlist__for_each_entry(leader->evlist, evsel) { if (evsel->core.leader != leader->core.leader) - return false; + continue; if (evsel != leader && arch_is_topdown_metrics(evsel)) return true; } diff --git a/tools/perf/arch/x86/util/unwind-libdw.c b/tools/perf/arch/x86/util/unwind-libdw.c index edb77e20e083..798493e887d7 100644 --- a/tools/perf/arch/x86/util/unwind-libdw.c +++ b/tools/perf/arch/x86/util/unwind-libdw.c @@ -8,7 +8,7 @@ bool libdw__arch_set_initial_registers(Dwfl_Thread *thread, void *arg) { struct unwind_info *ui = arg; - struct regs_dump *user_regs = &ui->sample->user_regs; + struct regs_dump *user_regs = perf_sample__user_regs(ui->sample); Dwarf_Word dwarf_regs[17]; unsigned nregs; |