Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+39 -45
+1
tools/arch/x86/include/uapi/asm/kvm.h
··· 377 377 378 378 #define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0) 379 379 #define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1) 380 + #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2) 380 381 381 382 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001 382 383 #define KVM_STATE_NESTED_RUN_PENDING 0x00000002
+1
tools/include/uapi/linux/kvm.h
··· 952 952 #define KVM_CAP_S390_HPAGE_1M 156 953 953 #define KVM_CAP_NESTED_STATE 157 954 954 #define KVM_CAP_ARM_INJECT_SERROR_ESR 158 955 + #define KVM_CAP_MSR_PLATFORM_INFO 159 955 956 956 957 #ifdef KVM_CAP_IRQ_ROUTING 957 958
+2 -2
tools/lib/api/fs/tracing_path.c
··· 36 36 37 37 __tracing_path_set("", mnt); 38 38 39 - return mnt; 39 + return tracing_path; 40 40 } 41 41 42 42 static const char *tracing_path_debugfs_mount(void) ··· 49 49 50 50 __tracing_path_set("tracing/", mnt); 51 51 52 - return mnt; 52 + return tracing_path; 53 53 } 54 54 55 55 const char *tracing_path_mount(void)
+1 -1
tools/perf/Makefile.config
··· 833 833 JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}') 834 834 else 835 835 ifneq (,$(wildcard /usr/sbin/alternatives)) 836 - JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g') 836 + JDIR=$(shell /usr/sbin/alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g') 837 837 endif 838 838 endif 839 839 ifndef JDIR
+1 -1
tools/perf/Makefile.perf
··· 635 635 $(LIB_FILE): $(LIBPERF_IN) 636 636 $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBPERF_IN) $(LIB_OBJS) 637 637 638 - LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) 638 + LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) 'EXTRA_CFLAGS=$(EXTRA_CFLAGS)' 'LDFLAGS=$(LDFLAGS)' 639 639 640 640 $(LIBTRACEEVENT): FORCE 641 641 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
+1
tools/perf/builtin-report.c
··· 981 981 .id_index = perf_event__process_id_index, 982 982 .auxtrace_info = perf_event__process_auxtrace_info, 983 983 .auxtrace = perf_event__process_auxtrace, 984 + .event_update = perf_event__process_event_update, 984 985 .feature = process_feature_event, 985 986 .ordered_events = true, 986 987 .ordering_requires_timestamps = true,
+8 -8
tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
··· 188 188 "Counter": "0,1,2,3", 189 189 "EventCode": "0xb", 190 190 "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES", 191 - "Filter": "filter_band0=1200", 191 + "Filter": "filter_band0=12", 192 192 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 193 193 "MetricName": "freq_ge_1200mhz_cycles %", 194 194 "PerPkg": "1", ··· 199 199 "Counter": "0,1,2,3", 200 200 "EventCode": "0xc", 201 201 "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES", 202 - "Filter": "filter_band1=2000", 202 + "Filter": "filter_band1=20", 203 203 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 204 204 "MetricName": "freq_ge_2000mhz_cycles %", 205 205 "PerPkg": "1", ··· 210 210 "Counter": "0,1,2,3", 211 211 "EventCode": "0xd", 212 212 "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES", 213 - "Filter": "filter_band2=3000", 213 + "Filter": "filter_band2=30", 214 214 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 215 215 "MetricName": "freq_ge_3000mhz_cycles %", 216 216 "PerPkg": "1", ··· 221 221 "Counter": "0,1,2,3", 222 222 "EventCode": "0xe", 223 223 "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES", 224 - "Filter": "filter_band3=4000", 224 + "Filter": "filter_band3=40", 225 225 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 226 226 "MetricName": "freq_ge_4000mhz_cycles %", 227 227 "PerPkg": "1", ··· 232 232 "Counter": "0,1,2,3", 233 233 "EventCode": "0xb", 234 234 "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS", 235 - "Filter": "edge=1,filter_band0=1200", 235 + "Filter": "edge=1,filter_band0=12", 236 236 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 237 237 "MetricName": "freq_ge_1200mhz_cycles %", 238 238 "PerPkg": "1", ··· 243 243 "Counter": "0,1,2,3", 244 244 "EventCode": "0xc", 245 245 "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS", 246 - "Filter": "edge=1,filter_band1=2000", 246 + "Filter": "edge=1,filter_band1=20", 247 247 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 248 248 "MetricName": "freq_ge_2000mhz_cycles %", 249 249 "PerPkg": "1", ··· 254 254 "Counter": "0,1,2,3", 255 255 "EventCode": "0xd", 256 256 "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS", 257 - "Filter": "edge=1,filter_band2=4000", 257 + "Filter": "edge=1,filter_band2=30", 258 258 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 259 259 "MetricName": "freq_ge_3000mhz_cycles %", 260 260 "PerPkg": "1", ··· 265 265 "Counter": "0,1,2,3", 266 266 "EventCode": "0xe", 267 267 "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS", 268 - "Filter": "edge=1,filter_band3=4000", 268 + "Filter": "edge=1,filter_band3=40", 269 269 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 270 270 "MetricName": "freq_ge_4000mhz_cycles %", 271 271 "PerPkg": "1",
+8 -8
tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
··· 187 187 "Counter": "0,1,2,3", 188 188 "EventCode": "0xb", 189 189 "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES", 190 - "Filter": "filter_band0=1200", 190 + "Filter": "filter_band0=12", 191 191 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 192 192 "MetricName": "freq_ge_1200mhz_cycles %", 193 193 "PerPkg": "1", ··· 198 198 "Counter": "0,1,2,3", 199 199 "EventCode": "0xc", 200 200 "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES", 201 - "Filter": "filter_band1=2000", 201 + "Filter": "filter_band1=20", 202 202 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 203 203 "MetricName": "freq_ge_2000mhz_cycles %", 204 204 "PerPkg": "1", ··· 209 209 "Counter": "0,1,2,3", 210 210 "EventCode": "0xd", 211 211 "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES", 212 - "Filter": "filter_band2=3000", 212 + "Filter": "filter_band2=30", 213 213 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 214 214 "MetricName": "freq_ge_3000mhz_cycles %", 215 215 "PerPkg": "1", ··· 220 220 "Counter": "0,1,2,3", 221 221 "EventCode": "0xe", 222 222 "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES", 223 - "Filter": "filter_band3=4000", 223 + "Filter": "filter_band3=40", 224 224 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 225 225 "MetricName": "freq_ge_4000mhz_cycles %", 226 226 "PerPkg": "1", ··· 231 231 "Counter": "0,1,2,3", 232 232 "EventCode": "0xb", 233 233 "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS", 234 - "Filter": "edge=1,filter_band0=1200", 234 + "Filter": "edge=1,filter_band0=12", 235 235 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 236 236 "MetricName": "freq_ge_1200mhz_cycles %", 237 237 "PerPkg": "1", ··· 242 242 "Counter": "0,1,2,3", 243 243 "EventCode": "0xc", 244 244 "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS", 245 - "Filter": "edge=1,filter_band1=2000", 245 + "Filter": "edge=1,filter_band1=20", 246 246 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 247 247 "MetricName": "freq_ge_2000mhz_cycles %", 248 248 "PerPkg": "1", ··· 253 253 "Counter": "0,1,2,3", 254 254 "EventCode": "0xd", 255 255 "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS", 256 - "Filter": "edge=1,filter_band2=4000", 256 + "Filter": "edge=1,filter_band2=30", 257 257 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 258 258 "MetricName": "freq_ge_3000mhz_cycles %", 259 259 "PerPkg": "1", ··· 264 264 "Counter": "0,1,2,3", 265 265 "EventCode": "0xe", 266 266 "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS", 267 - "Filter": "edge=1,filter_band3=4000", 267 + "Filter": "edge=1,filter_band3=40", 268 268 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.", 269 269 "MetricName": "freq_ge_4000mhz_cycles %", 270 270 "PerPkg": "1",
+3 -19
tools/perf/util/event.c
··· 1081 1081 } 1082 1082 1083 1083 *size += sizeof(struct cpu_map_data); 1084 + *size = PERF_ALIGN(*size, sizeof(u64)); 1084 1085 return zalloc(*size); 1085 1086 } 1086 1087 ··· 1561 1560 1562 1561 return NULL; 1563 1562 } 1564 - try_again: 1563 + 1565 1564 al->map = map_groups__find(mg, al->addr); 1566 - if (al->map == NULL) { 1567 - /* 1568 - * If this is outside of all known maps, and is a negative 1569 - * address, try to look it up in the kernel dso, as it might be 1570 - * a vsyscall or vdso (which executes in user-mode). 1571 - * 1572 - * XXX This is nasty, we should have a symbol list in the 1573 - * "[vdso]" dso, but for now lets use the old trick of looking 1574 - * in the whole kernel symbol list. 1575 - */ 1576 - if (cpumode == PERF_RECORD_MISC_USER && machine && 1577 - mg != &machine->kmaps && 1578 - machine__kernel_ip(machine, al->addr)) { 1579 - mg = &machine->kmaps; 1580 - load_map = true; 1581 - goto try_again; 1582 - } 1583 - } else { 1565 + if (al->map != NULL) { 1584 1566 /* 1585 1567 * Kernel maps might be changed when loading symbols so loading 1586 1568 * must be done prior to using kernel maps.
+3
tools/perf/util/evsel.c
··· 1089 1089 attr->exclude_user = 1; 1090 1090 } 1091 1091 1092 + if (evsel->own_cpus) 1093 + evsel->attr.read_format |= PERF_FORMAT_ID; 1094 + 1092 1095 /* 1093 1096 * Apply event specific term settings, 1094 1097 * it overloads any global configuration.
+7 -6
tools/perf/util/pmu.c
··· 930 930 931 931 static __u64 pmu_format_max_value(const unsigned long *format) 932 932 { 933 - __u64 w = 0; 934 - int fbit; 933 + int w; 935 934 936 - for_each_set_bit(fbit, format, PERF_PMU_FORMAT_BITS) 937 - w |= (1ULL << fbit); 938 - 939 - return w; 935 + w = bitmap_weight(format, PERF_PMU_FORMAT_BITS); 936 + if (!w) 937 + return 0; 938 + if (w < 64) 939 + return (1ULL << w) - 1; 940 + return -1; 940 941 } 941 942 942 943 /*
+3
tools/perf/util/srcline.c
··· 85 85 struct symbol *inline_sym; 86 86 char *demangled = NULL; 87 87 88 + if (!funcname) 89 + funcname = "??"; 90 + 88 91 if (dso) { 89 92 demangled = dso__demangle_sym(dso, 0, funcname); 90 93 if (demangled)