diff options
author | Peter Zijlstra <peterz@infradead.org> | 2017-02-15 16:12:20 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-02-24 08:56:32 +0100 |
commit | 7bbba0eb1af34694868d028b80475981f90e6bee (patch) | |
tree | 21d4b930cf7ce4bb2e0c8a5dc0979b54364808ca /kernel/events | |
parent | 279b5165ffadf57e2596e0ad438cb9b69b76f320 (diff) | |
download | blackbird-obmc-linux-7bbba0eb1af34694868d028b80475981f90e6bee.tar.gz blackbird-obmc-linux-7bbba0eb1af34694868d028b80475981f90e6bee.zip |
perf/core: Fix perf_event_enable_on_exec() timekeeping (again)
Where commit:
7fce250915ef ("perf: Fix scaling vs. perf_event_enable_on_exec()")
disabled the ctx-time a-priory, such that all events get enabled and
scheduled at the time point in time, there is one hole in that patch,
when no events do get enabled nothing re-enables the ctx-time.
Reported-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Reported-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Fixes: 7fce250915ef ("perf: Fix scaling vs. perf_event_enable_on_exec()")
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/events')
-rw-r--r-- | kernel/events/core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 94d7b9aae925..d4e3f8d8238b 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -3522,6 +3522,8 @@ static void perf_event_enable_on_exec(int ctxn) if (enabled) { clone_ctx = unclone_ctx(ctx); ctx_resched(cpuctx, ctx, event_type); + } else { + ctx_sched_in(ctx, cpuctx, EVENT_TIME, current); } perf_ctx_unlock(cpuctx, ctx); |