Mark Rutland
66eb579e66
perf: allow for PMU-specific event filtering
...
In certain circumstances it may not be possible to schedule particular
events due to constraints other than a lack of hardware counters (e.g.
on big.LITTLE systems where CPUs support different events). The core
perf event code does not distinguish these cases and pessimistically
assumes that any failure to schedule an event means that it is not worth
attempting to schedule later events, even if some hardware counters are
still unused.
When an event a pmu cannot schedule exists in a flexible group list it
can unnecessarily prevent event groups following it in the list from
being scheduled (until it is rotated to the end of the list). This means
some events are scheduled for only a portion of the time they could be,
and for short running programs no events may be scheduled if the list is
initially sorted in an unfortunate order.
This patch adds a new (optional) filter_match function pointer to struct
pmu which a pmu driver can use to tell perf core when an event matches
pmu-specific scheduling requirements. This plugs into the existing
event_filter_match logic, and makes it possible to avoid the scheduling
problem described above. When no filter is provided by the PMU, the
existing behaviour is retained.
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Acked-by: Will Deacon <will.deacon@arm.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2015-05-27 16:09:58 +01:00
..
bpf
bpf: fix two bugs in verification logic when accessing 'ctx' pointer
2015-04-16 14:08:49 -04:00
configs
debug
debug: prevent entering debug mode on panic/exception.
2015-02-19 12:39:03 -06:00
events
perf: allow for PMU-specific event filtering
2015-05-27 16:09:58 +01:00
gcov
gcov: fix softlockups
2015-04-17 09:04:08 -04:00
irq
irqchip core change for v4.1 (round 3)
2015-04-11 11:17:28 +02:00
livepatch
Merge branch 'for-4.1/core-noarch' into for-linus
2015-04-13 23:57:20 +02:00
locking
lockdep: Make print_lock() robust against concurrent release
2015-04-17 09:42:14 +02:00
power
Merge back earlier suspend/hibernate material for v4.1.
2015-04-10 12:01:59 +02:00
printk
TTY/Serial patches for 4.1-rc1
2015-04-21 09:33:10 -07:00
rcu
Merge branches 'doc.2015.02.26a', 'earlycb.2015.03.03a', 'fixes.2015.03.03a', 'gpexp.2015.02.26a', 'hotplug.2015.03.20a', 'sysidle.2015.02.26b' and 'tiny.2015.02.26a' into HEAD
2015-03-20 08:31:01 -07:00
sched
Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2015-04-14 13:58:48 -07:00
time
Char/Misc driver patches for 4.1-rc1
2015-04-21 09:42:58 -07:00
trace
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00
.gitignore
acct.c
acct: check FMODE_CAN_WRITE
2015-04-11 22:27:55 -04:00
async.c
audit.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00
audit.h
Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit
2015-04-22 14:49:23 -07:00
audit_tree.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00
audit_watch.c
VFS: audit: d_backing_inode() annotations
2015-04-15 15:06:55 -04:00
auditfilter.c
Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit
2015-02-11 20:07:47 -08:00
auditsc.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00
backtracetest.c
bounds.c
capability.c
kernel: conditionally support non-root users, groups and capabilities
2015-04-15 16:35:22 -07:00
cgroup.c
cgroup: remove use of seq_printf return value
2015-04-15 16:35:25 -07:00
cgroup_freezer.c
compat.c
all arches, signal: move restart_block to struct task_struct
2015-02-12 18:54:12 -08:00
configs.c
context_tracking.c
context_tracking: Export context_tracking_user_enter/exit
2015-03-09 15:43:00 +01:00
cpu.c
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2015-04-14 13:36:04 -07:00
cpu_pm.c
cpuset.c
kernel, cpuset: remove exception for __GFP_THISNODE
2015-04-14 16:49:03 -07:00
crash_dump.c
cred.c
kernel: conditionally support non-root users, groups and capabilities
2015-04-15 16:35:22 -07:00
delayacct.c
dma.c
elfcore.c
exec_domain.c
Remove rest of exec domains.
2015-04-12 21:03:31 +02:00
exit.c
Remove execution domain support
2015-04-12 20:58:24 +02:00
extable.c
fork.c
oprofile: reduce mmap_sem hold for mm->exe_file
2015-04-17 09:04:11 -04:00
freezer.c
futex.c
Linux 34.0-rc1
2015-02-24 08:41:07 +01:00
futex_compat.c
groups.c
kernel: conditionally support non-root users, groups and capabilities
2015-04-15 16:35:22 -07:00
hung_task.c
kernel/hung_task.c: change hung_task.c to use for_each_process_thread()
2015-04-15 16:35:22 -07:00
irq_work.c
jump_label.c
kallsyms.c
kcmp.c
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kexec.c
kexec: simplify conditional
2015-02-17 14:34:51 -08:00
kmod.c
kprobes.c
kprobes: makes kprobes/enabled works correctly for optimized kprobes.
2015-02-13 21:21:42 -08:00
ksysfs.c
kthread.c
latencytop.c
Makefile
kernel: conditionally support non-root users, groups and capabilities
2015-04-15 16:35:22 -07:00
module-internal.h
module.c
Quentin opened a can of worms by adding extable entry checking to modpost,
2015-04-22 09:49:24 -07:00
module_signing.c
notifier.c
nsproxy.c
padata.c
padata: use %*pb[l] to print bitmaps including cpumasks and nodemasks
2015-02-13 21:21:38 -08:00
panic.c
params.c
params: handle quotes properly for values not of form foo="bar".
2015-04-15 13:31:23 +09:30
pid.c
fork: report pid reservation failure properly
2015-04-17 09:04:06 -04:00
pid_namespace.c
profile.c
profile: use %*pb[l] to print bitmaps including cpumasks and nodemasks
2015-02-13 21:21:38 -08:00
ptrace.c
ptrace: ptrace_detach() can no longer race with SIGKILL
2015-04-17 09:04:06 -04:00
range.c
reboot.c
kernel/reboot.c: add orderly_reboot for graceful reboot
2015-04-15 16:35:23 -07:00
relay.c
VFS: kernel/: d_inode() annotations
2015-04-15 15:06:55 -04:00
resource.c
kernel/resource.c: remove deprecated __check_region() and friends
2015-04-15 16:35:22 -07:00
seccomp.c
seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO
2015-02-17 14:34:55 -08:00
signal.c
signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo
2015-04-17 09:04:06 -04:00
smp.c
smp: Fix error case handling in smp_call_function_*()
2015-04-19 13:19:23 -07:00
smpboot.c
smpboot: Add common code for notification from dying CPU
2015-03-11 13:20:25 -07:00
smpboot.h
softirq.c
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2015-02-09 15:24:03 -08:00
stacktrace.c
stop_machine.c
sys.c
prctl: avoid using mmap_sem for exe_file serialization
2015-04-17 09:04:07 -04:00
sys_ni.c
kernel: conditionally support non-root users, groups and capabilities
2015-04-15 16:35:22 -07:00
sysctl.c
kernel/sysctl.c: detect overflows when converting to int
2015-04-17 09:04:08 -04:00
sysctl_binary.c
system_certificates.S
system_keyring.c
task_work.c
taskstats.c
test_kprobes.c
torture.c
tracepoint.c
tsacct.c
uid16.c
up.c
user-return-notifier.c
user.c
user_namespace.c
utsname.c
utsname_sysctl.c
watchdog.c
Merge branch 'akpm' (patches from Andrew)
2015-04-14 16:49:17 -07:00
workqueue.c
workqueue: Reorder sysfs code
2015-04-06 11:16:04 -04:00
workqueue_internal.h