• Kan Liang's avatar
    perf/x86/intel: Don't extend the pseudo-encoding to GP counters · 4a263bf3
    Kan Liang authored
    The INST_RETIRED.PREC_DIST event (0x0100) doesn't count on SPR.
    perf stat -e cpu/event=0xc0,umask=0x0/,cpu/event=0x0,umask=0x1/ -C0
    
     Performance counter stats for 'CPU(s) 0':
    
               607,246      cpu/event=0xc0,umask=0x0/
                     0      cpu/event=0x0,umask=0x1/
    
    The encoding for INST_RETIRED.PREC_DIST is pseudo-encoding, which
    doesn't work on the generic counters. However, current perf extends its
    mask to the generic counters.
    
    The pseudo event-code for a fixed counter must be 0x00. Check and avoid
    extending the mask for the fixed counter event which using the
    pseudo-encoding, e.g., ref-cycles and PREC_DIST event.
    
    With the patch,
    perf stat -e cpu/event=0xc0,umask=0x0/,cpu/event=0x0,umask=0x1/ -C0
    
     Performance counter stats for 'CPU(s) 0':
    
               583,184      cpu/event=0xc0,umask=0x0/
               583,048      cpu/event=0x0,umask=0x1/
    
    Fixes: 2de71ee1 ("perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings")
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1648482543-14923-1-git-send-email-kan.liang@linux.intel.com
    4a263bf3
perf_event.h 15.5 KB