summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-05-01 23:23:17 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-05-01 23:23:17 -0400
commit7c8c03bfc7b9f5211d8a69eab7fee99c9fb4f449 (patch)
treea5cee67325e50e893bf0cc0a0d060983a0df6653 /include/linux
parent6dc2cce9321198172cd96f955a5fc798a4cc35a6 (diff)
parentfd7647979a3948dae4fc6f25dbbdf9ba269bed78 (diff)
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf updates from Ingo Molnar: "The main changes in this cycle were: Kernel side changes: - Kprobes and uprobes changes: - Make their trampolines read-only while they are used - Make UPROBES_EVENTS default-y which is the distro practice - Apply misc fixes and robustization to probe point insertion. - add support for AMD IOMMU events - extend hw events on Intel Goldmont CPUs - ... plus misc fixes and updates. Tooling side changes: - support s390 jump instructions in perf annotate (Christian Borntraeger) - vendor hardware events updates (Andi Kleen) - add argument support for SDT events in powerpc (Ravi Bangoria) - beautify the statx syscall arguments in 'perf trace' (Arnaldo Carvalho de Melo) - handle inline functions in callchains (Jin Yao) - enable sorting by srcline as key (Milian Wolff) - add 'brstackinsn' field in 'perf script' to reuse the x86 instruction decoder used in the Intel PT code to study hot paths to samples (Andi Kleen) - add PERF_RECORD_NAMESPACES so that the kernel can record information required to associate samples to namespaces, helping in container problem characterization. (Hari Bathini) - allow sorting by symbol_size in 'perf report' and 'perf top' (Charles Baylis) - in perf stat, make system wide (-a) the default option if no target was specified and one of following conditions is met: - no workload specified (current behaviour) - a workload is specified but all requested events are system wide ones, like uncore ones. (Jiri Olsa) - ... plus lots of other updates, enhancements, cleanups and fixes" * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (235 commits) perf tools: Fix the code to strip command name tools arch x86: Sync cpufeatures.h tools arch: Sync arch/x86/lib/memcpy_64.S with the kernel tools: Update asm-generic/mman-common.h copy from the kernel perf tools: Use just forward declarations for struct thread where possible perf tools: Add the right header to obtain PERF_ALIGN() perf tools: Remove poll.h and wait.h from util.h perf tools: Remove string.h, unistd.h and sys/stat.h from util.h perf tools: Remove stale prototypes from builtin.h perf tools: Remove string.h from util.h perf tools: Remove sys/ioctl.h from util.h perf tools: Remove a few more needless includes from util.h perf tools: Include sys/param.h where needed perf callchain: Move callchain specific routines from util.[ch] perf tools: Add compress.h for the *_decompress_to_file() headers perf mem: Fix display of data source snoop indication perf debug: Move dump_stack() and sighandler_dump_stack() to debug.h perf kvm: Make function only used by 'perf kvm' static perf tools: Move timestamp routines from util.h to time-utils.h perf tools: Move units conversion/formatting routines to separate object ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/coresight.h2
-rw-r--r--include/linux/kprobes.h2
-rw-r--r--include/linux/perf_event.h17
3 files changed, 17 insertions, 4 deletions
diff --git a/include/linux/coresight.h b/include/linux/coresight.h
index 2a5982c37dfb..035c16c9a505 100644
--- a/include/linux/coresight.h
+++ b/include/linux/coresight.h
@@ -201,7 +201,7 @@ struct coresight_ops_sink {
201 void *sink_config); 201 void *sink_config);
202 unsigned long (*reset_buffer)(struct coresight_device *csdev, 202 unsigned long (*reset_buffer)(struct coresight_device *csdev,
203 struct perf_output_handle *handle, 203 struct perf_output_handle *handle,
204 void *sink_config, bool *lost); 204 void *sink_config);
205 void (*update_buffer)(struct coresight_device *csdev, 205 void (*update_buffer)(struct coresight_device *csdev,
206 struct perf_output_handle *handle, 206 struct perf_output_handle *handle,
207 void *sink_config); 207 void *sink_config);
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h
index c328e4f7dcad..47e4da5b4fa2 100644
--- a/include/linux/kprobes.h
+++ b/include/linux/kprobes.h
@@ -267,6 +267,8 @@ extern int arch_init_kprobes(void);
267extern void show_registers(struct pt_regs *regs); 267extern void show_registers(struct pt_regs *regs);
268extern void kprobes_inc_nmissed_count(struct kprobe *p); 268extern void kprobes_inc_nmissed_count(struct kprobe *p);
269extern bool arch_within_kprobe_blacklist(unsigned long addr); 269extern bool arch_within_kprobe_blacklist(unsigned long addr);
270extern bool arch_function_offset_within_entry(unsigned long offset);
271extern bool function_offset_within_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset);
270 272
271extern bool within_kprobe_blacklist(unsigned long addr); 273extern bool within_kprobe_blacklist(unsigned long addr);
272 274
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 000fdb211c7d..24a635887f28 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -165,6 +165,13 @@ struct hw_perf_event {
165 struct list_head bp_list; 165 struct list_head bp_list;
166 }; 166 };
167#endif 167#endif
168 struct { /* amd_iommu */
169 u8 iommu_bank;
170 u8 iommu_cntr;
171 u16 padding;
172 u64 conf;
173 u64 conf1;
174 };
168 }; 175 };
169 /* 176 /*
170 * If the event is a per task event, this will point to the task in 177 * If the event is a per task event, this will point to the task in
@@ -801,6 +808,7 @@ struct perf_output_handle {
801 struct ring_buffer *rb; 808 struct ring_buffer *rb;
802 unsigned long wakeup; 809 unsigned long wakeup;
803 unsigned long size; 810 unsigned long size;
811 u64 aux_flags;
804 union { 812 union {
805 void *addr; 813 void *addr;
806 unsigned long head; 814 unsigned long head;
@@ -849,10 +857,11 @@ perf_cgroup_from_task(struct task_struct *task, struct perf_event_context *ctx)
849extern void *perf_aux_output_begin(struct perf_output_handle *handle, 857extern void *perf_aux_output_begin(struct perf_output_handle *handle,
850 struct perf_event *event); 858 struct perf_event *event);
851extern void perf_aux_output_end(struct perf_output_handle *handle, 859extern void perf_aux_output_end(struct perf_output_handle *handle,
852 unsigned long size, bool truncated); 860 unsigned long size);
853extern int perf_aux_output_skip(struct perf_output_handle *handle, 861extern int perf_aux_output_skip(struct perf_output_handle *handle,
854 unsigned long size); 862 unsigned long size);
855extern void *perf_get_aux(struct perf_output_handle *handle); 863extern void *perf_get_aux(struct perf_output_handle *handle);
864extern void perf_aux_output_flag(struct perf_output_handle *handle, u64 flags);
856 865
857extern int perf_pmu_register(struct pmu *pmu, const char *name, int type); 866extern int perf_pmu_register(struct pmu *pmu, const char *name, int type);
858extern void perf_pmu_unregister(struct pmu *pmu); 867extern void perf_pmu_unregister(struct pmu *pmu);
@@ -1112,6 +1121,7 @@ extern int perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks
1112 1121
1113extern void perf_event_exec(void); 1122extern void perf_event_exec(void);
1114extern void perf_event_comm(struct task_struct *tsk, bool exec); 1123extern void perf_event_comm(struct task_struct *tsk, bool exec);
1124extern void perf_event_namespaces(struct task_struct *tsk);
1115extern void perf_event_fork(struct task_struct *tsk); 1125extern void perf_event_fork(struct task_struct *tsk);
1116 1126
1117/* Callchains */ 1127/* Callchains */
@@ -1267,8 +1277,8 @@ static inline void *
1267perf_aux_output_begin(struct perf_output_handle *handle, 1277perf_aux_output_begin(struct perf_output_handle *handle,
1268 struct perf_event *event) { return NULL; } 1278 struct perf_event *event) { return NULL; }
1269static inline void 1279static inline void
1270perf_aux_output_end(struct perf_output_handle *handle, unsigned long size, 1280perf_aux_output_end(struct perf_output_handle *handle, unsigned long size)
1271 bool truncated) { } 1281 { }
1272static inline int 1282static inline int
1273perf_aux_output_skip(struct perf_output_handle *handle, 1283perf_aux_output_skip(struct perf_output_handle *handle,
1274 unsigned long size) { return -EINVAL; } 1284 unsigned long size) { return -EINVAL; }
@@ -1315,6 +1325,7 @@ static inline int perf_unregister_guest_info_callbacks
1315static inline void perf_event_mmap(struct vm_area_struct *vma) { } 1325static inline void perf_event_mmap(struct vm_area_struct *vma) { }
1316static inline void perf_event_exec(void) { } 1326static inline void perf_event_exec(void) { }
1317static inline void perf_event_comm(struct task_struct *tsk, bool exec) { } 1327static inline void perf_event_comm(struct task_struct *tsk, bool exec) { }
1328static inline void perf_event_namespaces(struct task_struct *tsk) { }
1318static inline void perf_event_fork(struct task_struct *tsk) { } 1329static inline void perf_event_fork(struct task_struct *tsk) { }
1319static inline void perf_event_init(void) { } 1330static inline void perf_event_init(void) { }
1320static inline int perf_swevent_get_recursion_context(void) { return -1; } 1331static inline int perf_swevent_get_recursion_context(void) { return -1; }