• Peter Zijlstra's avatar
    perf: Fix throttle logic · 4fe757dd
    Peter Zijlstra authored
    It was possible to call pmu::start() on an already running event. In
    particular this lead so some wreckage as the hrtimer events would
    re-initialize active timers.
    
    This was due to throttled events being activated again by scheduling.
    Scheduling in a context would add and force start events, resulting in
    running events with a possible throttle status. The next tick to hit
    that task will then try to unthrottle the event and call ->start() on
    an already running event.
    Reported-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    LKML-Reference: <new-submission>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    4fe757dd
perf_event.c 153 KB