Commit 9b00eb8a authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Ingo writes:
  "perf fixes:

   Misc perf tooling fixes."

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  perf tools: Stop fallbacking to kallsyms for vdso symbols lookup
  perf tools: Pass build flags to traceevent build
  perf report: Don't crash on invalid inline debug information
  perf cpu_map: Align cpu map synthesized events properly.
  perf tools: Fix tracing_path_mount proper path
  perf tools: Fix use of alternatives to find JDIR
  perf evsel: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus
  perf vendor events intel: Fix wrong filter_band* values for uncore events
  Revert "perf tools: Fix PMU term format max value calculation"
  tools headers uapi: Sync kvm.h copy
  tools arch uapi: Sync the x86 kvm.h copy
parents 270b77a0 20e8e72d
...@@ -377,6 +377,7 @@ struct kvm_sync_regs { ...@@ -377,6 +377,7 @@ struct kvm_sync_regs {
#define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0) #define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
#define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1) #define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
#define KVM_STATE_NESTED_GUEST_MODE 0x00000001 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
#define KVM_STATE_NESTED_RUN_PENDING 0x00000002 #define KVM_STATE_NESTED_RUN_PENDING 0x00000002
......
...@@ -952,6 +952,7 @@ struct kvm_ppc_resize_hpt { ...@@ -952,6 +952,7 @@ struct kvm_ppc_resize_hpt {
#define KVM_CAP_S390_HPAGE_1M 156 #define KVM_CAP_S390_HPAGE_1M 156
#define KVM_CAP_NESTED_STATE 157 #define KVM_CAP_NESTED_STATE 157
#define KVM_CAP_ARM_INJECT_SERROR_ESR 158 #define KVM_CAP_ARM_INJECT_SERROR_ESR 158
#define KVM_CAP_MSR_PLATFORM_INFO 159
#ifdef KVM_CAP_IRQ_ROUTING #ifdef KVM_CAP_IRQ_ROUTING
......
...@@ -36,7 +36,7 @@ static const char *tracing_path_tracefs_mount(void) ...@@ -36,7 +36,7 @@ static const char *tracing_path_tracefs_mount(void)
__tracing_path_set("", mnt); __tracing_path_set("", mnt);
return mnt; return tracing_path;
} }
static const char *tracing_path_debugfs_mount(void) static const char *tracing_path_debugfs_mount(void)
...@@ -49,7 +49,7 @@ static const char *tracing_path_debugfs_mount(void) ...@@ -49,7 +49,7 @@ static const char *tracing_path_debugfs_mount(void)
__tracing_path_set("tracing/", mnt); __tracing_path_set("tracing/", mnt);
return mnt; return tracing_path;
} }
const char *tracing_path_mount(void) const char *tracing_path_mount(void)
......
...@@ -833,7 +833,7 @@ ifndef NO_JVMTI ...@@ -833,7 +833,7 @@ ifndef NO_JVMTI
JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}') JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
else else
ifneq (,$(wildcard /usr/sbin/alternatives)) ifneq (,$(wildcard /usr/sbin/alternatives))
JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g') JDIR=$(shell /usr/sbin/alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g')
endif endif
endif endif
ifndef JDIR ifndef JDIR
......
...@@ -635,7 +635,7 @@ $(LIBPERF_IN): prepare FORCE ...@@ -635,7 +635,7 @@ $(LIBPERF_IN): prepare FORCE
$(LIB_FILE): $(LIBPERF_IN) $(LIB_FILE): $(LIBPERF_IN)
$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBPERF_IN) $(LIB_OBJS) $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBPERF_IN) $(LIB_OBJS)
LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) 'EXTRA_CFLAGS=$(EXTRA_CFLAGS)' 'LDFLAGS=$(LDFLAGS)'
$(LIBTRACEEVENT): FORCE $(LIBTRACEEVENT): FORCE
$(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
......
...@@ -981,6 +981,7 @@ int cmd_report(int argc, const char **argv) ...@@ -981,6 +981,7 @@ int cmd_report(int argc, const char **argv)
.id_index = perf_event__process_id_index, .id_index = perf_event__process_id_index,
.auxtrace_info = perf_event__process_auxtrace_info, .auxtrace_info = perf_event__process_auxtrace_info,
.auxtrace = perf_event__process_auxtrace, .auxtrace = perf_event__process_auxtrace,
.event_update = perf_event__process_event_update,
.feature = process_feature_event, .feature = process_feature_event,
.ordered_events = true, .ordered_events = true,
.ordering_requires_timestamps = true, .ordering_requires_timestamps = true,
......
...@@ -188,7 +188,7 @@ ...@@ -188,7 +188,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xb", "EventCode": "0xb",
"EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
"Filter": "filter_band0=1200", "Filter": "filter_band0=12",
"MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_1200mhz_cycles %", "MetricName": "freq_ge_1200mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -199,7 +199,7 @@ ...@@ -199,7 +199,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xc", "EventCode": "0xc",
"EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
"Filter": "filter_band1=2000", "Filter": "filter_band1=20",
"MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_2000mhz_cycles %", "MetricName": "freq_ge_2000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xd", "EventCode": "0xd",
"EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
"Filter": "filter_band2=3000", "Filter": "filter_band2=30",
"MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_3000mhz_cycles %", "MetricName": "freq_ge_3000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -221,7 +221,7 @@ ...@@ -221,7 +221,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xe", "EventCode": "0xe",
"EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
"Filter": "filter_band3=4000", "Filter": "filter_band3=40",
"MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_4000mhz_cycles %", "MetricName": "freq_ge_4000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -232,7 +232,7 @@ ...@@ -232,7 +232,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xb", "EventCode": "0xb",
"EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band0=1200", "Filter": "edge=1,filter_band0=12",
"MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_1200mhz_cycles %", "MetricName": "freq_ge_1200mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xc", "EventCode": "0xc",
"EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band1=2000", "Filter": "edge=1,filter_band1=20",
"MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_2000mhz_cycles %", "MetricName": "freq_ge_2000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xd", "EventCode": "0xd",
"EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band2=4000", "Filter": "edge=1,filter_band2=30",
"MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_3000mhz_cycles %", "MetricName": "freq_ge_3000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -265,7 +265,7 @@ ...@@ -265,7 +265,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xe", "EventCode": "0xe",
"EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band3=4000", "Filter": "edge=1,filter_band3=40",
"MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_4000mhz_cycles %", "MetricName": "freq_ge_4000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
......
...@@ -187,7 +187,7 @@ ...@@ -187,7 +187,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xb", "EventCode": "0xb",
"EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
"Filter": "filter_band0=1200", "Filter": "filter_band0=12",
"MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_1200mhz_cycles %", "MetricName": "freq_ge_1200mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -198,7 +198,7 @@ ...@@ -198,7 +198,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xc", "EventCode": "0xc",
"EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
"Filter": "filter_band1=2000", "Filter": "filter_band1=20",
"MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_2000mhz_cycles %", "MetricName": "freq_ge_2000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -209,7 +209,7 @@ ...@@ -209,7 +209,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xd", "EventCode": "0xd",
"EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
"Filter": "filter_band2=3000", "Filter": "filter_band2=30",
"MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_3000mhz_cycles %", "MetricName": "freq_ge_3000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -220,7 +220,7 @@ ...@@ -220,7 +220,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xe", "EventCode": "0xe",
"EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES", "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
"Filter": "filter_band3=4000", "Filter": "filter_band3=40",
"MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_4000mhz_cycles %", "MetricName": "freq_ge_4000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -231,7 +231,7 @@ ...@@ -231,7 +231,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xb", "EventCode": "0xb",
"EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band0=1200", "Filter": "edge=1,filter_band0=12",
"MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_1200mhz_cycles %", "MetricName": "freq_ge_1200mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xc", "EventCode": "0xc",
"EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band1=2000", "Filter": "edge=1,filter_band1=20",
"MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_2000mhz_cycles %", "MetricName": "freq_ge_2000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -253,7 +253,7 @@ ...@@ -253,7 +253,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xd", "EventCode": "0xd",
"EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band2=4000", "Filter": "edge=1,filter_band2=30",
"MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_3000mhz_cycles %", "MetricName": "freq_ge_3000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
...@@ -264,7 +264,7 @@ ...@@ -264,7 +264,7 @@
"Counter": "0,1,2,3", "Counter": "0,1,2,3",
"EventCode": "0xe", "EventCode": "0xe",
"EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS", "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
"Filter": "edge=1,filter_band3=4000", "Filter": "edge=1,filter_band3=40",
"MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
"MetricName": "freq_ge_4000mhz_cycles %", "MetricName": "freq_ge_4000mhz_cycles %",
"PerPkg": "1", "PerPkg": "1",
......
...@@ -1081,6 +1081,7 @@ void *cpu_map_data__alloc(struct cpu_map *map, size_t *size, u16 *type, int *max ...@@ -1081,6 +1081,7 @@ void *cpu_map_data__alloc(struct cpu_map *map, size_t *size, u16 *type, int *max
} }
*size += sizeof(struct cpu_map_data); *size += sizeof(struct cpu_map_data);
*size = PERF_ALIGN(*size, sizeof(u64));
return zalloc(*size); return zalloc(*size);
} }
...@@ -1560,26 +1561,9 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr, ...@@ -1560,26 +1561,9 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr,
return NULL; return NULL;
} }
try_again:
al->map = map_groups__find(mg, al->addr); al->map = map_groups__find(mg, al->addr);
if (al->map == NULL) { if (al->map != NULL) {
/*
* If this is outside of all known maps, and is a negative
* address, try to look it up in the kernel dso, as it might be
* a vsyscall or vdso (which executes in user-mode).
*
* XXX This is nasty, we should have a symbol list in the
* "[vdso]" dso, but for now lets use the old trick of looking
* in the whole kernel symbol list.
*/
if (cpumode == PERF_RECORD_MISC_USER && machine &&
mg != &machine->kmaps &&
machine__kernel_ip(machine, al->addr)) {
mg = &machine->kmaps;
load_map = true;
goto try_again;
}
} else {
/* /*
* Kernel maps might be changed when loading symbols so loading * Kernel maps might be changed when loading symbols so loading
* must be done prior to using kernel maps. * must be done prior to using kernel maps.
......
...@@ -1089,6 +1089,9 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts, ...@@ -1089,6 +1089,9 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts,
attr->exclude_user = 1; attr->exclude_user = 1;
} }
if (evsel->own_cpus)
evsel->attr.read_format |= PERF_FORMAT_ID;
/* /*
* Apply event specific term settings, * Apply event specific term settings,
* it overloads any global configuration. * it overloads any global configuration.
......
...@@ -930,13 +930,14 @@ static void pmu_format_value(unsigned long *format, __u64 value, __u64 *v, ...@@ -930,13 +930,14 @@ static void pmu_format_value(unsigned long *format, __u64 value, __u64 *v,
static __u64 pmu_format_max_value(const unsigned long *format) static __u64 pmu_format_max_value(const unsigned long *format)
{ {
__u64 w = 0; int w;
int fbit;
for_each_set_bit(fbit, format, PERF_PMU_FORMAT_BITS)
w |= (1ULL << fbit);
return w; w = bitmap_weight(format, PERF_PMU_FORMAT_BITS);
if (!w)
return 0;
if (w < 64)
return (1ULL << w) - 1;
return -1;
} }
/* /*
......
...@@ -85,6 +85,9 @@ static struct symbol *new_inline_sym(struct dso *dso, ...@@ -85,6 +85,9 @@ static struct symbol *new_inline_sym(struct dso *dso,
struct symbol *inline_sym; struct symbol *inline_sym;
char *demangled = NULL; char *demangled = NULL;
if (!funcname)
funcname = "??";
if (dso) { if (dso) {
demangled = dso__demangle_sym(dso, 0, funcname); demangled = dso__demangle_sym(dso, 0, funcname);
if (demangled) if (demangled)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment