linux/arch/x86/kernel/cpu
Peter Zijlstra 34f439278c perf: Add per event clockid support
While thinking on the whole clock discussion it occurred to me we have
two distinct uses of time:

 1) the tracking of event/ctx/cgroup enabled/running/stopped times
    which includes the self-monitoring support in struct
    perf_event_mmap_page.

 2) the actual timestamps visible in the data records.

And we've been conflating them.

The first is all about tracking time deltas, nobody should really care
in what time base that happens, its all relative information, as long
as its internally consistent it works.

The second however is what people are worried about when having to
merge their data with external sources. And here we have the
discussion on MONOTONIC vs MONOTONIC_RAW etc..

Where MONOTONIC is good for correlating between machines (static
offset), MONOTNIC_RAW is required for correlating against a fixed rate
hardware clock.

This means configurability; now 1) makes that hard because it needs to
be internally consistent across groups of unrelated events; which is
why we had to have a global perf_clock().

However, for 2) it doesn't really matter, perf itself doesn't care
what it writes into the buffer.

The below patch makes the distinction between these two cases by
adding perf_event_clock() which is used for the second case. It
further makes this configurable on a per-event basis, but adds a few
sanity checks such that we cannot combine events with different clocks
in confusing ways.

And since we then have per-event configurability we might as well
retain the 'legacy' behaviour as a default.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-03-27 10:13:22 +01:00
..
mcheck Fix regression - functions on the mce notifier chain should 2015-02-17 17:03:07 -08:00
microcode * Two fixes hardening microcode data handling. (Quentin Casasnovas) 2015-02-19 13:32:42 +01:00
mtrr x86: Store a per-cpu shadow copy of CR4 2015-02-04 12:10:42 +01:00
.gitignore
amd.c Merge branch 'perf/hw_breakpoints' into perf/core 2015-01-28 15:48:59 +01:00
bugs_64.c
bugs.c
centaur.c x86: Remove CONFIG_X86_OOSTORE 2014-03-11 10:16:18 -07:00
common.c Merge branch 'perf/x86' into perf/core, because it's ready 2015-03-27 09:46:19 +01:00
cpu.h
cyrix.c
hypervisor.c
intel_cacheinfo.c x86: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:37 -08:00
intel.c x86/cpu/intel: Fix trivial typo in intel_tlb_table[] 2015-02-22 08:55:58 +01:00
Makefile perf/x86/intel: Fix Makefile to actually build the cqm driver 2015-03-23 10:58:03 +01:00
match.c x86: align x86 arch with generic CPU modalias handling 2014-02-18 12:45:38 -08:00
mkcapflags.sh x86: Fix mkcapflags.sh bash-ism 2014-12-23 15:34:57 +01:00
mshyperv.c x86, hyperv: Mark the Hyper-V clocksource as being continuous 2015-01-20 14:36:25 +01:00
perf_event_amd_ibs.c perf/x86/amd/ibs: Convert force_ibs_eilvt_setup() to void 2015-02-18 17:01:46 +01:00
perf_event_amd_iommu.c cpumask: factor out show_cpumap into separate helper function 2014-11-07 11:45:00 -08:00
perf_event_amd_iommu.h
perf_event_amd_uncore.c cpumask: factor out show_cpumap into separate helper function 2014-11-07 11:45:00 -08:00
perf_event_amd.c x86: Replace __get_cpu_var uses 2014-08-26 13:45:49 -04:00
perf_event_intel_cqm.c perf: Remove type specific target pointers 2015-03-23 10:58:04 +01:00
perf_event_intel_ds.c perf/x86/intel: Fix bug for "cycles:p" and "cycles:pp" on SLM 2015-01-16 09:06:59 +01:00
perf_event_intel_lbr.c perf/x86/intel: Expose LBR callstack to user space tooling 2015-02-18 17:16:15 +01:00
perf_event_intel_rapl.c perf/rapl: Fix crash in rapl_scale() 2015-01-28 13:04:35 +01:00
perf_event_intel_uncore_nhmex.c perf/x86/uncore: Fix coccinelle warnings 2014-08-13 07:51:09 +02:00
perf_event_intel_uncore_snb.c perf/x86/intel/uncore: Update support for client uncore IMC PMU 2014-09-24 14:48:25 +02:00
perf_event_intel_uncore_snbep.c perf/x86/intel/uncore: Delete an unnecessary check before pci_dev_put() call 2015-02-18 17:01:42 +01:00
perf_event_intel_uncore.c perf/x86/intel/uncore: Move uncore_box_init() out of driver initialization 2015-01-28 13:04:34 +01:00
perf_event_intel_uncore.h perf/x86/intel/uncore: Move uncore_box_init() out of driver initialization 2015-01-28 13:04:34 +01:00
perf_event_intel.c perf/x86/intel: Add INST_RETIRED.ALL workarounds 2015-03-27 09:14:03 +01:00
perf_event_knc.c x86: Replace __get_cpu_var uses 2014-08-26 13:45:49 -04:00
perf_event_p4.c x86: Replace __get_cpu_var uses 2014-08-26 13:45:49 -04:00
perf_event_p6.c perf/x86/intel/p6: Add userspace RDPMC quirk for PPro 2014-02-09 13:08:24 +01:00
perf_event.c perf: Add per event clockid support 2015-03-27 10:13:22 +01:00
perf_event.h perf/x86/intel: Add INST_RETIRED.ALL workarounds 2015-03-27 09:14:03 +01:00
perfctr-watchdog.c
powerflags.c
proc.c x86: Replace seq_printf() with seq_puts() 2014-12-08 11:48:15 +01:00
rdrand.c x86, rdrand: When nordrand is specified, disable RDSEED as well 2014-05-11 20:25:20 -07:00
scattered.c x86: Add support for Intel HWP feature detection. 2014-11-12 00:04:37 +01:00
topology.c
transmeta.c
umc.c
vmware.c