• Adrian Hunter's avatar
    perf/x86: Fix time_shift in perf_event_mmap_page · b9511cd7
    Adrian Hunter authored
    Commit:
    
      b20112ed ("perf/x86: Improve accuracy of perf/sched clock")
    
    allowed the time_shift value in perf_event_mmap_page to be as much
    as 32.  Unfortunately the documented algorithms for using time_shift
    have it shifting an integer, whereas to work correctly with the value
    32, the type must be u64.
    
    In the case of perf tools, Intel PT decodes correctly but the timestamps
    that are output (for example by perf script) have lost 32-bits of
    granularity so they look like they are not changing at all.
    
    Fix by limiting the shift to 31 and adjusting the multiplier accordingly.
    
    Also update the documentation of perf_event_mmap_page so that new code
    based on it will be more future-proof.
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: b20112ed ("perf/x86: Improve accuracy of perf/sched clock")
    Link: http://lkml.kernel.org/r/1445001845-13688-2-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    b9511cd7
tsc.c 32.1 KB