Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf updates from Ingo Molnar: "Lots of tooling updates - too many to list, here's a few highlights: - Various subcommand updates to 'perf trace', 'perf report', 'perf record', 'perf annotate', 'perf script', 'perf test', etc. - CPU and NUMA topology and affinity handling improvements, - HW tracing and HW support updates: - Intel PT updates - ARM CoreSight updates - vendor HW event updates - BPF updates - Tons of infrastructure updates, both on the build system and the library support side - Documentation updates. - ... and lots of other changes, see the changelog for details. Kernel side updates: - Tighten up kprobes blacklist handling, reduce the number of places where developers can install a kprobe and hang/crash the system. - Fix/enhance vma address filter handling. - Various PMU driver updates, small fixes and additions. - refcount_t conversions - BPF updates - error code propagation enhancements - misc other changes" * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (238 commits) perf script python: Add Python3 support to syscall-counts-by-pid.py perf script python: Add Python3 support to syscall-counts.py perf script python: Add Python3 support to stat-cpi.py perf script python: Add Python3 support to stackcollapse.py perf script python: Add Python3 support to sctop.py perf script python: Add Python3 support to powerpc-hcalls.py perf script python: Add Python3 support to net_dropmonitor.py perf script python: Add Python3 support to mem-phys-addr.py perf script python: Add Python3 support to failed-syscalls-by-pid.py perf script python: Add Python3 support to netdev-times.py perf tools: Add perf_exe() helper to find perf binary perf script: Handle missing fields with -F +.. perf data: Add perf_data__open_dir_data function perf data: Add perf_data__(create_dir|close_dir) functions perf data: Fail check_backup in case of error perf data: Make check_backup work over directories perf tools: Add rm_rf_perf_data function perf tools: Add pattern name checking to rm_rf perf tools: Add depth checking to rm_rf perf data: Add global path holder ...
This commit is contained in:
@@ -154,8 +154,9 @@ struct coresight_connection {
|
||||
* @orphan: true if the component has connections that haven't been linked.
|
||||
* @enable: 'true' if component is currently part of an active path.
|
||||
* @activated: 'true' only if a _sink_ has been activated. A sink can be
|
||||
activated but not yet enabled. Enabling for a _sink_
|
||||
happens when a source has been selected for that it.
|
||||
* activated but not yet enabled. Enabling for a _sink_
|
||||
* appens when a source has been selected for that it.
|
||||
* @ea: Device attribute for sink representation under PMU directory.
|
||||
*/
|
||||
struct coresight_device {
|
||||
struct coresight_connection *conns;
|
||||
@@ -168,7 +169,9 @@ struct coresight_device {
|
||||
atomic_t *refcnt;
|
||||
bool orphan;
|
||||
bool enable; /* true only if configured as part of a path */
|
||||
/* sink specific fields */
|
||||
bool activated; /* true only if a sink is part of a path */
|
||||
struct dev_ext_attribute *ea;
|
||||
};
|
||||
|
||||
#define to_coresight_device(d) container_of(d, struct coresight_device, dev)
|
||||
|
@@ -1007,6 +1007,7 @@ bpf_address_lookup(unsigned long addr, unsigned long *size,
|
||||
|
||||
void bpf_prog_kallsyms_add(struct bpf_prog *fp);
|
||||
void bpf_prog_kallsyms_del(struct bpf_prog *fp);
|
||||
void bpf_get_prog_name(const struct bpf_prog *prog, char *sym);
|
||||
|
||||
#else /* CONFIG_BPF_JIT */
|
||||
|
||||
@@ -1062,6 +1063,12 @@ static inline void bpf_prog_kallsyms_add(struct bpf_prog *fp)
|
||||
static inline void bpf_prog_kallsyms_del(struct bpf_prog *fp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void bpf_get_prog_name(const struct bpf_prog *prog, char *sym)
|
||||
{
|
||||
sym[0] = '\0';
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BPF_JIT */
|
||||
|
||||
void bpf_prog_kallsyms_del_subprogs(struct bpf_prog *fp);
|
||||
|
@@ -53,8 +53,8 @@ struct perf_guest_info_callbacks {
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/perf_regs.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/refcount.h>
|
||||
#include <asm/local.h>
|
||||
|
||||
struct perf_callchain_entry {
|
||||
@@ -244,6 +244,7 @@ struct perf_event;
|
||||
#define PERF_PMU_CAP_EXCLUSIVE 0x10
|
||||
#define PERF_PMU_CAP_ITRACE 0x20
|
||||
#define PERF_PMU_CAP_HETEROGENEOUS_CPUS 0x40
|
||||
#define PERF_PMU_CAP_NO_EXCLUDE 0x80
|
||||
|
||||
/**
|
||||
* struct pmu - generic performance monitoring unit
|
||||
@@ -409,7 +410,7 @@ struct pmu {
|
||||
/*
|
||||
* Set up pmu-private data structures for an AUX area
|
||||
*/
|
||||
void *(*setup_aux) (int cpu, void **pages,
|
||||
void *(*setup_aux) (struct perf_event *event, void **pages,
|
||||
int nr_pages, bool overwrite);
|
||||
/* optional */
|
||||
|
||||
@@ -494,6 +495,11 @@ struct perf_addr_filters_head {
|
||||
unsigned int nr_file_filters;
|
||||
};
|
||||
|
||||
struct perf_addr_filter_range {
|
||||
unsigned long start;
|
||||
unsigned long size;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum perf_event_state - the states of an event:
|
||||
*/
|
||||
@@ -670,7 +676,7 @@ struct perf_event {
|
||||
/* address range filters */
|
||||
struct perf_addr_filters_head addr_filters;
|
||||
/* vma address array for file-based filders */
|
||||
unsigned long *addr_filters_offs;
|
||||
struct perf_addr_filter_range *addr_filter_ranges;
|
||||
unsigned long addr_filters_gen;
|
||||
|
||||
void (*destroy)(struct perf_event *);
|
||||
@@ -742,7 +748,7 @@ struct perf_event_context {
|
||||
int nr_stat;
|
||||
int nr_freq;
|
||||
int rotate_disable;
|
||||
atomic_t refcount;
|
||||
refcount_t refcount;
|
||||
struct task_struct *task;
|
||||
|
||||
/*
|
||||
@@ -983,9 +989,9 @@ extern void perf_event_output_forward(struct perf_event *event,
|
||||
extern void perf_event_output_backward(struct perf_event *event,
|
||||
struct perf_sample_data *data,
|
||||
struct pt_regs *regs);
|
||||
extern void perf_event_output(struct perf_event *event,
|
||||
struct perf_sample_data *data,
|
||||
struct pt_regs *regs);
|
||||
extern int perf_event_output(struct perf_event *event,
|
||||
struct perf_sample_data *data,
|
||||
struct pt_regs *regs);
|
||||
|
||||
static inline bool
|
||||
is_default_overflow_handler(struct perf_event *event)
|
||||
@@ -1009,6 +1015,15 @@ perf_event__output_id_sample(struct perf_event *event,
|
||||
extern void
|
||||
perf_log_lost_samples(struct perf_event *event, u64 lost);
|
||||
|
||||
static inline bool event_has_any_exclude_flag(struct perf_event *event)
|
||||
{
|
||||
struct perf_event_attr *attr = &event->attr;
|
||||
|
||||
return attr->exclude_idle || attr->exclude_user ||
|
||||
attr->exclude_kernel || attr->exclude_hv ||
|
||||
attr->exclude_guest || attr->exclude_host;
|
||||
}
|
||||
|
||||
static inline bool is_sampling_event(struct perf_event *event)
|
||||
{
|
||||
return event->attr.sample_period != 0;
|
||||
@@ -1118,6 +1133,13 @@ static inline void perf_event_task_sched_out(struct task_struct *prev,
|
||||
}
|
||||
|
||||
extern void perf_event_mmap(struct vm_area_struct *vma);
|
||||
|
||||
extern void perf_event_ksymbol(u16 ksym_type, u64 addr, u32 len,
|
||||
bool unregister, const char *sym);
|
||||
extern void perf_event_bpf_event(struct bpf_prog *prog,
|
||||
enum perf_bpf_event_type type,
|
||||
u16 flags);
|
||||
|
||||
extern struct perf_guest_info_callbacks *perf_guest_cbs;
|
||||
extern int perf_register_guest_info_callbacks(struct perf_guest_info_callbacks *callbacks);
|
||||
extern int perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks *callbacks);
|
||||
@@ -1338,6 +1360,13 @@ static inline int perf_unregister_guest_info_callbacks
|
||||
(struct perf_guest_info_callbacks *callbacks) { return 0; }
|
||||
|
||||
static inline void perf_event_mmap(struct vm_area_struct *vma) { }
|
||||
|
||||
typedef int (perf_ksymbol_get_name_f)(char *name, int name_len, void *data);
|
||||
static inline void perf_event_ksymbol(u16 ksym_type, u64 addr, u32 len,
|
||||
bool unregister, const char *sym) { }
|
||||
static inline void perf_event_bpf_event(struct bpf_prog *prog,
|
||||
enum perf_bpf_event_type type,
|
||||
u16 flags) { }
|
||||
static inline void perf_event_exec(void) { }
|
||||
static inline void perf_event_comm(struct task_struct *tsk, bool exec) { }
|
||||
static inline void perf_event_namespaces(struct task_struct *tsk) { }
|
||||
|
Reference in New Issue
Block a user