• Jiri Olsa's avatar
    perf/x86/intel: Fix debug_store reset field for freq events · dc853e26
    Jiri Olsa authored
    There's a bug in PEBs event enabling code, that prevents PEBS
    freq events to work properly after non freq PEBS event was run.
    
    freq events - perf_event_attr::freq set
                  -F <freq> option of perf record
    
    PEBS events - perf_event_attr::precise_ip > 0
                  default for perf record
    
    Like in following example with CPU 0 busy, we expect ~10000 samples
    for following perf tool run:
    
      # perf record -F 10000 -C 0 sleep 1
      [ perf record: Woken up 2 times to write data ]
      [ perf record: Captured and wrote 0.640 MB perf.data (10031 samples) ]
    
    Everything's fine, but once we run non freq PEBS event like:
    
      # perf record -c 10000 -C 0 sleep 1
      [ perf record: Woken up 4 times to write data ]
      [ perf record: Captured and wrote 1.053 MB perf.data (20061 samples) ]
    
    the freq events start to fail like this:
    
      # perf record -F 10000 -C 0 sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.185 MB perf.data (40 samples) ]
    
    The issue is in non freq PEBs event initialization of debug_store reset
    field, which value is used to auto-reload the counter value after PEBS
    event drain. This value is not being used for PEBS freq events, but once
    we run non freq event it stays in debug_store data and screws the
    sample_freq counting for PEBS freq events.
    
    Setting the reset field to 0 for freq events.
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170714163551.19459-1-jolsa@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    dc853e26
ds.c 39.7 KB