• Peter Zijlstra's avatar
    perf/x86: Fix 'active_events' imbalance · 93472aff
    Peter Zijlstra authored
    Commit 1b7b938f ("perf/x86/intel: Fix PMI handling for Intel PT") conditionally
    increments active_events in x86_add_exclusive() but unconditionally decrements in
    x86_del_exclusive().
    
    These extra decrements can lead to the situation where
    active_events is zero and thus the PMI handler is 'disabled'
    while we have active events on the PMU generating PMIs.
    
    This leads to a truckload of:
    
      Uhhuh. NMI received for unknown reason 21 on CPU 28.
      Do you have a strange power saving mode enabled?
      Dazed and confused, but trying to continue
    
    messages and generally messes up perf.
    
    Remove the condition on the increment, double increment balanced
    by a double decrement is perfectly fine.
    
    Restructure the code a little bit to make the unconditional inc
    a bit more natural.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: alexander.shishkin@linux.intel.com
    Cc: brgerst@gmail.com
    Cc: dvlasenk@redhat.com
    Cc: luto@amacapital.net
    Cc: oleg@redhat.com
    Fixes: 1b7b938f ("perf/x86/intel: Fix PMI handling for Intel PT")
    Link: http://lkml.kernel.org/r/20150624144750.GJ18673@twins.programming.kicks-ass.netSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    93472aff
perf_event.c 54.2 KB