• Don Zickus's avatar
    perf, x86: Fix accidentally ack'ing a second event on intel perf counter · 2e556b5b
    Don Zickus authored
    During testing of a patch to stop having the perf subsytem
    swallow nmis, it was uncovered that Nehalem boxes were randomly
    getting unknown nmis when using the perf tool.
    
    Moving the ack'ing of the PMI closer to when we get the status
    allows the hardware to properly re-set the PMU bit signaling
    another PMI was triggered during the processing of the first
    PMI.  This allows the new logic for dealing with the
    shortcomings of multiple PMIs to handle the extra NMI by
    'eat'ing it later.
    
    Now one can wonder why are we getting a second PMI when we
    disable all the PMUs in the begining of the NMI handler to
    prevent such a case, for that I do not know.  But I know the fix
    below helps deal with this quirk.
    
    Tested on multiple Nehalems where the problem was occuring.
    With the patch, the code now loops a second time to handle the
    second PMI (whereas before it was not).
    Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
    Cc: peterz@infradead.org
    Cc: robert.richter@amd.com
    Cc: gorcunov@gmail.com
    Cc: fweisbec@gmail.com
    Cc: ying.huang@intel.com
    Cc: ming.m.lin@intel.com
    Cc: eranian@google.com
    LKML-Reference: <1283454469-1909-2-git-send-email-dzickus@redhat.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    2e556b5b
perf_event_intel.c 27.6 KB