projects/linux·commit b02ac6b1

Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

b02ac6b1 · Linus Torvalds <[email protected]> · 2015-11-03 17:38:09 -08:00

Pull perf updates from Ingo Molnar:
 "Kernel side changes:

   - Improve accuracy of perf/sched clock on x86.  (Adrian Hunter)

   - Intel DS and BTS updates.  (Alexander Shishkin)

   - Intel cstate PMU support.  (Kan Liang)

   - Add group read support to perf_event_read().  (Peter Zijlstra)

   - Branch call hardware sampling support, implemented on x86 and
     PowerPC.  (Stephane Eranian)

   - Event groups transactional interface enhancements.  (Sukadev
     Bhattiprolu)

   - Enable proper x86/intel/uncore PMU support on multi-segment PCI
     systems.  (Taku Izumi)

   - ... misc fixes and cleanups.

  The perf tooling team was very busy again with 200+ commits, the full
  diff doesn't fit into lkml size limits.  Here's an (incomplete) list
  of the tooling highlights:

  New features:

   - Change the default event used in all tools (record/top): use the
     most precise "cycles" hw counter available, i.e. when the user
     doesn't specify any event, it will try using cycles:ppp, cycles:pp,
     etc and fall back transparently until it finds a working counter.
     (Arnaldo Carvalho de Melo)

   - Integration of perf with eBPF that, given an eBPF .c source file
     (or .o file built for the 'bpf' target with clang), will get it
     automatically built, validated and loaded into the kernel via the
     sys_bpf syscall, which can then be used and seen using 'perf trace'
     and other tools.

     (Wang Nan)

  Various user interface improvements:

   - Automatic pager invocation on long help output.  (Namhyung Kim)

   - Search for more options when passing args to -h, e.g.: (Arnaldo
     Carvalho de Melo)

        $ perf report -h interface

        Usage: perf report [<options>]

         --gtk    Use the GTK2 interface
         --stdio  Use the stdio interface
         --tui    Use the TUI interface

   - Show ordered command line options when -h is used or when an
     unknown option is specified.  (Arnaldo Carvalho de Melo)

   - If options are passed after -h, show just its descriptions, not all
     options.  (Arnaldo Carvalho de Melo)

   - Implement column based horizontal scrolling in the hists browser
     (top, report), making it possible to use the TUI for things like
     'perf mem report' where there are many more columns than can fit in
     a terminal.  (Arnaldo Carvalho de Melo)

   - Enhance the error reporting of tracepoint event parsing, e.g.:

       $ oldperf record -e sched:sched_switc usleep 1
       event syntax error: 'sched:sched_switc'
                            \___ unknown tracepoint
       Run 'perf list' for a list of valid events

     Now we get the much nicer:

       $ perf record -e sched:sched_switc ls
       event syntax error: 'sched:sched_switc'
                            \___ can't access trace events

       Error: No permissions to read /sys/kernel/debug/tracing/events/sched/sched_switc
       Hint:  Try 'sudo mount -o remount,mode=755 /sys/kernel/debug'

     And after we have those mount point permissions fixed:

       $ perf record -e sched:sched_switc ls
       event syntax error: 'sched:sched_switc'
                            \___ unknown tracepoint

       Error: File /sys/kernel/debug/tracing/events/sched/sched_switc not found.
       Hint:  Perhaps this kernel misses some CONFIG_ setting to enable this feature?.

     I.e.  basically now the event parsing routing uses the strerror_open()
     routines introduced by and used in 'perf trace' work.  (Jiri Olsa)

   - Fail properly when pattern matching fails to find a tracepoint,
     i.e. '-e non:existent' was being correctly handled, with a proper
     error message about that not being a valid event, but '-e
     non:existent*' wasn't, fix it.  (Jiri Olsa)

   - Do event name substring search as last resort in 'perf list'.
     (Arnaldo Carvalho de Melo)

     E.g.:

       # perf list clock

       List of pre-defined events (to be used in -e):

        cpu-clock                                          [Software event]
        task-clock                                         [Software event]

        uncore_cbox_0/clockticks/                          [Kernel PMU event]
        uncore_cbox_1/clockticks/                          [Kernel PMU event]

        kvm:kvm_pvclock_update                             [Tracepoint event]
        kvm:kvm_update_master_clock                        [Tracepoint event]
        power:clock_disable                                [Tracepoint event]
        power:clock_enable                                 [Tracepoint event]
        power:clock_set_rate                               [Tracepoint event]
        syscalls:sys_enter_clock_adjtime                   [Tracepoint event]
        syscalls:sys_enter_clock_getres                    [Tracepoint event]
        syscalls:sys_enter_clock_gettime                   [Tracepoint event]
        syscalls:sys_enter_clock_nanosleep                 [Tracepoint event]
        syscalls:sys_enter_clock_settime                   [Tracepoint event]
        syscalls:sys_exit_clock_adjtime                    [Tracepoint event]
        syscalls:sys_exit_clock_getres                     [Tracepoint event]
        syscalls:sys_exit_clock_gettime                    [Tracepoint event]
        syscalls:sys_exit_clock_nanosleep                  [Tracepoint event]
        syscalls:sys_exit_clock_settime                    [Tracepoint event]

  Intel PT hardware tracing enhancements:

   - Accept a zero --itrace period, meaning "as often as possible".  In
     the case of Intel PT that is the same as a period of 1 and a unit
     of 'instructions' (i.e.  --itrace=i1i).  (Adrian Hunter)

   - Harmonize itrace's synthesized callchains with the existing
     --max-stack tool option.  (Adrian Hunter)

   - Allow time to be displayed in nanoseconds in 'perf script'.
     (Adrian Hunter)

   - Fix potential infinite loop when handling Intel PT timestamps.
     (Adrian Hunter)

   - Slighly improve Intel PT debug logging.  (Adrian Hunter)

   - Warn when AUX data has been lost, just like when processing
     PERF_RECORD_LOST.  (Adrian Hunter)

   - Further document export-to-postgresql.py script.  (Adrian Hunter)

   - Add option to synthesize branch stack from auxtrace data.  (Adrian
     Hunter)

  Misc notable changes:

   - Switch the default callchain output mode to 'graph,0.5,caller', to
     make it look like the default for other tools, reducing the
     learning curve for people used to 'caller' based viewing.  (Arnaldo
     Carvalho de Melo)

   - various call chain usability enhancements.  (Namhyung Kim)

   - Introduce the 'P' event modifier, meaning 'max precision level,
     please', i.e.:

        $ perf record -e cycles:P usleep 1

     Is now similar to:

        $ perf record usleep 1

     Useful, for instance, when specifying multiple events.  (Jiri Olsa)

   - Add 'socket' sort entry, to sort by the processor socket in 'perf
     top' and 'perf report'.  (Kan Liang)

   - Introduce --socket-filter to 'perf report', for filtering by
     processor socket.  (Kan Liang)

   - Add new "Zoom into Processor Socket" operation in the perf hists
     browser, used in 'perf top' and 'perf report'.  (Kan Liang)

   - Allow probing on kmodules without DWARF.  (Masami Hiramatsu)

   - Fix 'perf probe -l' for probes added to kernel module functions.
     (Masami Hiramatsu)

   - Preparatory work for the 'perf stat record' feature that will allow
     generating perf.data files with counting data in addition to the
     sampling mode we have now (Jiri Olsa)

   - Update libtraceevent KVM plugin.  (Paolo Bonzini)

   - ... plus lots of other enhancements that I failed to list properly,
     by: Adrian Hunter, Alexander Shishkin, Andi Kleen, Andrzej Hajda,
     Arnaldo Carvalho de Melo, Dima Kogan, Don Zickus, Geliang Tang, He
     Kuang, Huaitong Han, Ingo Molnar, Jan Stancek, Jiri Olsa, Kan
     Liang, Kirill Tkhai, Masami Hiramatsu, Matt Fleming, Namhyung Kim,
     Paolo Bonzini, Peter Zijlstra, Rabin Vincent, Scott Wood, Stephane
     Eranian, Sukadev Bhattiprolu, Taku Izumi, Vaishali Thakkar, Wang
     Nan, Yang Shi and Yunlong Song"

* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (260 commits)
  perf unwind: Pass symbol source to libunwind
  tools build: Fix libiberty feature detection
  perf tools: Compile scriptlets to BPF objects when passing '.c' to --event
  perf record: Add clang options for compiling BPF scripts
  perf bpf: Attach eBPF filter to perf event
  perf tools: Make sure fixdep is built before libbpf
  perf script: Enable printing of branch stack
  perf trace: Add cmd string table to decode sys_bpf first arg
  perf bpf: Collect perf_evsel in BPF object files
  perf tools: Load eBPF object into kernel
  perf tools: Create probe points for BPF programs
  perf tools: Enable passing bpf object file to --event
  perf ebpf: Add the libbpf glue
  perf tools: Make perf depend on libbpf
  perf symbols: Fix endless loop in dso__split_kallsyms_for_kcore
  perf tools: Enable pre-event inherit setting by config terms
  perf symbols: we can now read separate debug-info files based on a build ID
  perf symbols: Fix type error when reading a build-id
  perf tools: Search for more options when passing args to -h
  perf stat: Cache aggregated map entries in extra cpumap
  ...
Commit
b02ac6b18cd4e2c76bf0a102c20c429b973f5f76
Parents
105ff3cb · bebd23a2

Merge commit. Changes below are compared with the first parent: 105ff3cb.

Changes

215 files changed · +9951 −2026

FileStatusAddDelContent
arch/powerpc/perf/core-book3s.cmodified+30−6View file
arch/powerpc/perf/hv-24x7.cmodified+164−2View file
arch/powerpc/perf/power8-pmu.cmodified+3−0View file
arch/s390/kernel/perf_cpum_cf.cmodified+30−5View file
arch/sparc/kernel/perf_event.cmodified+25−7View file
arch/x86/kernel/cpu/Makefilemodified+1−0View file
arch/x86/kernel/cpu/intel_cacheinfo.cmodified+4−4View file
arch/x86/kernel/cpu/perf_event.cmodified+33−6View file
arch/x86/kernel/cpu/perf_event.hmodified+1−1View file
arch/x86/kernel/cpu/perf_event_intel_bts.cmodified+13−0View file
arch/x86/kernel/cpu/perf_event_intel_cstate.cadded+694−0View file
arch/x86/kernel/cpu/perf_event_intel_ds.cmodified+34−6View file
arch/x86/kernel/cpu/perf_event_intel_lbr.cmodified+6−2View file
arch/x86/kernel/cpu/perf_event_intel_pt.cmodified+4−3View file
arch/x86/kernel/cpu/perf_event_intel_uncore.cmodified+58−3View file
arch/x86/kernel/cpu/perf_event_intel_uncore.hmodified+11−1View file
arch/x86/kernel/cpu/perf_event_intel_uncore_snb.cmodified+13−3View file
arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.cmodified+25−9View file
arch/x86/kernel/tsc.cmodified+22−13View file
arch/x86/lib/x86-opcode-map.txtmodified+19−5View file
include/linux/perf_event.hmodified+103−17View file
include/uapi/linux/perf_event.hmodified+4−2View file
kernel/events/core.cmodified+165−59View file
tools/build/.gitignoreadded+1−0View file
tools/build/Buildadded+1−0View file
tools/build/Build.includemodified+14−3View file
tools/build/Documentation/Build.txtmodified+39−13View file
tools/build/Makefileadded+43−0View file
tools/build/Makefile.buildmodified+7−0View file
tools/build/Makefile.featuremodified+9−6View file
tools/build/Makefile.includeadded+10−0View file
tools/build/feature/Makefilemodified+2−2View file
tools/build/fixdep.cadded+168−0View file
tools/build/tests/ex/Buildmodified+1−0View file
tools/build/tests/ex/Makefilemodified+8−5View file
tools/build/tests/ex/ex.cmodified+2−0View file
tools/build/tests/ex/inc.cadded+8−0View file
tools/build/tests/run.shmodified+27−0View file
tools/include/linux/compiler.hmodified+24−8View file
tools/include/linux/err.hadded+49−0View file
tools/include/linux/filter.hadded+231−0View file
tools/lib/api/Buildmodified+1−0View file
tools/lib/api/Makefilemodified+4−2View file
tools/lib/api/cpu.cadded+18−0View file
tools/lib/api/cpu.hadded+6−0View file
tools/lib/api/fs/Buildmodified+1−3View file
tools/lib/api/fs/debugfs.cdeleted+0−129View before deletion
tools/lib/api/fs/debugfs.hdeleted+0−23View before deletion
tools/lib/api/fs/findfs.cdeleted+0−63View before deletion
tools/lib/api/fs/findfs.hdeleted+0−23View before deletion
tools/lib/api/fs/fs.cmodified+153−12View file
tools/lib/api/fs/fs.hmodified+23−7View file
tools/lib/api/fs/tracefs.cdeleted+0−78View before deletion
tools/lib/api/fs/tracefs.hdeleted+0−21View before deletion
tools/lib/api/fs/tracing_path.cadded+135−0View file
tools/lib/api/fs/tracing_path.hadded+16−0View file
tools/lib/bpf/Makefilemodified+7−4View file
tools/lib/lockdep/Makefilemodified+4−2View file
tools/lib/symbol/kallsyms.cmodified+6−0View file
tools/lib/symbol/kallsyms.hmodified+3−1View file
tools/lib/traceevent/event-parse.cmodified+56−4View file
tools/lib/traceevent/event-parse.hmodified+1−0View file
tools/lib/traceevent/plugin_kvm.cmodified+17−8View file
tools/perf/Documentation/intel-pt.txtmodified+44−0View file
tools/perf/Documentation/itrace.txtmodified+4−0View file
tools/perf/Documentation/perf-bench.txtmodified+19−35View file
tools/perf/Documentation/perf-inject.txtmodified+3−0View file
tools/perf/Documentation/perf-list.txtmodified+3−0View file
tools/perf/Documentation/perf-record.txtmodified+14−2View file
tools/perf/Documentation/perf-report.txtmodified+32−16View file
tools/perf/Documentation/perf-script.txtmodified+15−2View file
tools/perf/Documentation/perf-stat.txtmodified+3−2View file
tools/perf/Documentation/perf-top.txtmodified+3−2View file
tools/perf/Documentation/perf.txtmodified+8−0View file
tools/perf/MANIFESTmodified+5−0View file
tools/perf/Makefile.perfmodified+35−18View file
tools/perf/arch/common.cmodified+4−6View file
tools/perf/arch/common.hmodified+2−2View file
tools/perf/arch/x86/Buildmodified+1−1View file
tools/perf/arch/x86/Makefilemodified+1−0View file
tools/perf/arch/x86/include/arch-tests.hadded+19−0View file
tools/perf/arch/x86/tests/Buildmodified+8−2View file
tools/perf/arch/x86/tests/arch-tests.cadded+34−0View file
tools/perf/arch/x86/tests/dwarf-unwind.cmodified+1−0View file
tools/perf/arch/x86/tests/gen-insn-x86-dat.awkadded+75−0View file
tools/perf/arch/x86/tests/gen-insn-x86-dat.shadded+43−0View file
tools/perf/arch/x86/tests/insn-x86-dat-32.cadded+658−0View file
tools/perf/arch/x86/tests/insn-x86-dat-64.cadded+768−0View file
tools/perf/arch/x86/tests/insn-x86-dat-src.cadded+877−0View file
tools/perf/arch/x86/tests/insn-x86.cadded+185−0View file
tools/perf/arch/x86/tests/intel-cqm.cadded+124−0View file
tools/perf/tests/perf-time-to-tsc.c → tools/perf/arch/x86/tests/perf-time-to-tsc.crenamed+3−1View file
tools/perf/tests/rdpmc.c → tools/perf/arch/x86/tests/rdpmc.crenamed+2−5View file
tools/perf/arch/x86/util/dwarf-regs.cmodified+88−34View file
tools/perf/arch/x86/util/intel-pt.cmodified+47−8View file
tools/perf/bench/Buildmodified+1−1View file
tools/perf/bench/mem-functions.cadded+379−0View file
tools/perf/bench/mem-memcpy.cdeleted+0−434View before deletion
tools/perf/bench/numa.cmodified+2−2View file
tools/perf/bench/sched-messaging.cmodified+5−5View file
tools/perf/builtin-annotate.cmodified+1−1View file
tools/perf/builtin-bench.cmodified+7−7View file
tools/perf/builtin-evlist.cmodified+2−2View file
tools/perf/builtin-help.cmodified+1−1View file
tools/perf/builtin-inject.cmodified+125−2View file
tools/perf/builtin-kmem.cmodified+1−1View file
tools/perf/builtin-kvm.cmodified+0−1View file
tools/perf/builtin-list.cmodified+17−3View file
tools/perf/builtin-probe.cmodified+131−16View file
tools/perf/builtin-record.cmodified+40−16View file
tools/perf/builtin-report.cmodified+55−10View file
tools/perf/builtin-sched.cmodified+2−2View file
tools/perf/builtin-script.cmodified+104−9View file
tools/perf/builtin-stat.cmodified+82−11View file
tools/perf/builtin-top.cmodified+50−9View file
tools/perf/builtin-trace.cmodified+21−10View file
tools/perf/config/Makefilemodified+22−1View file
tools/perf/perf.cmodified+25−5View file
tools/perf/python/twatch.pymodified+20−3View file
tools/perf/scripts/python/export-to-postgresql.pymodified+221−0View file
tools/perf/tests/Buildmodified+1−3View file
tools/perf/tests/bpf-script-example.cadded+44−0View file
tools/perf/tests/builtin-test.cmodified+36−40View file
tools/perf/tests/code-reading.cmodified+61−15View file
tools/perf/tests/dwarf-unwind.cmodified+4−0View file
tools/perf/tests/evsel-tp-sched.cmodified+8−2View file
tools/perf/tests/hists_filter.cmodified+45−10View file
tools/perf/tests/makemodified+3−1View file
tools/perf/tests/mmap-basic.cmodified+2−1View file
tools/perf/tests/openat-syscall-all-cpus.cmodified+6−7View file
tools/perf/tests/openat-syscall-tp-fields.cmodified+3−2View file
tools/perf/tests/openat-syscall.cmodified+6−7View file
tools/perf/tests/parse-events.cmodified+33−16View file
tools/perf/tests/tests.hmodified+7−3View file
tools/perf/tests/topology.cadded+115−0View file
tools/perf/tests/vmlinux-kallsyms.cmodified+2−2View file
tools/perf/trace/strace/groups/filemodified+2−0View file
tools/perf/ui/browser.cmodified+14−0View file
tools/perf/ui/browser.hmodified+1−1View file
tools/perf/ui/browsers/annotate.cmodified+7−7View file
tools/perf/ui/browsers/hists.cmodified+95−25View file
tools/perf/ui/browsers/map.cmodified+1−1View file
tools/perf/ui/browsers/scripts.cmodified+1−1View file
tools/perf/ui/hist.cmodified+8−8View file
tools/perf/ui/tui/setup.cmodified+4−4View file
tools/perf/util/Buildmodified+2−0View file
tools/perf/util/annotate.cmodified+4−1View file
tools/perf/util/annotate.hmodified+1−1View file
tools/perf/util/auxtrace.cmodified+23−1View file
tools/perf/util/auxtrace.hmodified+4−0View file
tools/perf/util/bpf-loader.cadded+352−0View file
tools/perf/util/bpf-loader.hadded+85−0View file
tools/perf/util/callchain.cmodified+39−3View file
tools/perf/util/callchain.hmodified+26−0View file
tools/perf/util/cpumap.cmodified+52−45View file
tools/perf/util/cpumap.hmodified+8−2View file
tools/perf/util/env.cadded+86−0View file
tools/perf/util/env.hadded+44−0View file
tools/perf/util/event.cmodified+15−7View file
tools/perf/util/event.hmodified+6−0View file
tools/perf/util/evlist.cmodified+43−4View file
tools/perf/util/evlist.hmodified+5−0View file
tools/perf/util/evsel.cmodified+45−5View file
tools/perf/util/evsel.hmodified+8−2View file
tools/perf/util/header.cmodified+93−43View file
tools/perf/util/header.hmodified+1−26View file
tools/perf/util/hist.cmodified+56−3View file
tools/perf/util/hist.hmodified+7−1View file
tools/perf/util/include/dwarf-regs.hmodified+8−0View file
tools/perf/util/intel-pt-decoder/Buildmodified+12−1View file
tools/perf/util/intel-pt-decoder/intel-pt-decoder.cmodified+2−2View file
tools/perf/util/intel-pt-decoder/intel-pt-log.cmodified+11−10View file
tools/perf/util/intel-pt-decoder/intel-pt-log.hmodified+32−6View file
tools/perf/util/intel-pt-decoder/x86-opcode-map.txtmodified+19−5View file
tools/perf/util/intel-pt.cmodified+237−29View file
tools/perf/util/machine.cmodified+15−14View file
tools/perf/util/machine.hmodified+8−1View file
tools/perf/util/map.cmodified+14−7View file
tools/perf/util/map.hmodified+2−0View file
tools/perf/util/parse-branch-options.cmodified+1−0View file
tools/perf/util/parse-events.cmodified+334−40View file
tools/perf/util/parse-events.hmodified+15−1View file
tools/perf/util/parse-events.lmodified+10−2View file
tools/perf/util/parse-events.ymodified+69−13View file
tools/perf/util/parse-options.cmodified+133−23View file
tools/perf/util/parse-options.hmodified+5−0View file
tools/perf/util/pmu.cmodified+17−25View file
tools/perf/util/probe-event.cmodified+122−112View file
tools/perf/util/probe-event.hmodified+11−0View file
tools/perf/util/probe-file.cmodified+38−18View file
tools/perf/util/probe-file.hmodified+4−0View file
tools/perf/util/probe-finder.cmodified+54−4View file
tools/perf/util/python.cmodified+55−4View file
tools/perf/util/scripting-engines/trace-event-perl.cmodified+1−0View file
tools/perf/util/scripting-engines/trace-event-python.cmodified+2−1View file
tools/perf/util/session.cmodified+16−21View file
tools/perf/util/session.hmodified+2−0View file
tools/perf/util/sort.cmodified+70−4View file
tools/perf/util/sort.hmodified+6−0View file
tools/perf/util/srcline.cmodified+24−5View file
tools/perf/util/stat.cmodified+7−6View file
tools/perf/util/stat.hmodified+2−1View file
tools/perf/util/strbuf.cmodified+15−7View file
tools/perf/util/strbuf.hmodified+2−0View file
tools/perf/util/symbol-minimal.cmodified+1−1View file
tools/perf/util/symbol.cmodified+20−11View file
tools/perf/util/symbol.hmodified+1−0View file
tools/perf/util/trace-event-info.cmodified+1−1View file
tools/perf/util/trace-event.cmodified+13−3View file
tools/perf/util/trace-event.hmodified+2−0View file
tools/perf/util/unwind-libunwind.cmodified+12−7View file
tools/perf/util/usage.cmodified+5−0View file
tools/perf/util/util.cmodified+1−71View file
tools/perf/util/util.hmodified+4−8View file
tools/vm/page-types.cmodified+3−3View file

Only the first 600 diff lines are shown. Download the complete patch.

arch/powerpc/perf/core-book3s.c

View file
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index b0382f3..d1e65ce 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -48,7 +48,7 @@ struct cpu_hw_events {
unsigned long amasks[MAX_HWEVENTS][MAX_EVENT_ALTERNATIVES];
unsigned long avalues[MAX_HWEVENTS][MAX_EVENT_ALTERNATIVES];
- unsigned int group_flag;
+ unsigned int txn_flags;
int n_txn_start;
/* BHRB bits */
@@ -1441,7 +1441,7 @@ static int power_pmu_add(struct perf_event *event, int ef_flags)
* skip the schedulability test here, it will be performed
* at commit time(->commit_txn) as a whole
*/
- if (cpuhw->group_flag & PERF_EVENT_TXN)
+ if (cpuhw->txn_flags & PERF_PMU_TXN_ADD)
goto nocheck;
if (check_excludes(cpuhw->event, cpuhw->flags, n0, 1))
@@ -1586,13 +1586,22 @@ static void power_pmu_stop(struct perf_event *event, int ef_flags)
* Start group events scheduling transaction
* Set the flag to make pmu::enable() not perform the
* schedulability test, it will be performed at commit time
+ *
+ * We only support PERF_PMU_TXN_ADD transactions. Save the
+ * transaction flags but otherwise ignore non-PERF_PMU_TXN_ADD
+ * transactions.
*/
-static void power_pmu_start_txn(struct pmu *pmu)
+static void power_pmu_start_txn(struct pmu *pmu, unsigned int txn_flags)
{
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
+ WARN_ON_ONCE(cpuhw->txn_flags); /* txn already in flight */
+
+ cpuhw->txn_flags = txn_flags;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
+
perf_pmu_disable(pmu);
- cpuhw->group_flag |= PERF_EVENT_TXN;
cpuhw->n_txn_start = cpuhw->n_events;
}
@@ -1604,8 +1613,15 @@ static void power_pmu_start_txn(struct pmu *pmu)
static void power_pmu_cancel_txn(struct pmu *pmu)
{
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
+ unsigned int txn_flags;
+
+ WARN_ON_ONCE(!cpuhw->txn_flags); /* no txn in flight */
+
+ txn_flags = cpuhw->txn_flags;
+ cpuhw->txn_flags = 0;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
- cpuhw->group_flag &= ~PERF_EVENT_TXN;
perf_pmu_enable(pmu);
}
@@ -1621,7 +1637,15 @@ static int power_pmu_commit_txn(struct pmu *pmu)
if (!ppmu)
return -EAGAIN;
+
cpuhw = this_cpu_ptr(&cpu_hw_events);
+ WARN_ON_ONCE(!cpuhw->txn_flags); /* no txn in flight */
+
+ if (cpuhw->txn_flags & ~PERF_PMU_TXN_ADD) {
+ cpuhw->txn_flags = 0;
+ return 0;
+ }
+
n = cpuhw->n_events;
if (check_excludes(cpuhw->event, cpuhw->flags, 0, n))
return -EAGAIN;
@@ -1632,7 +1656,7 @@ static int power_pmu_commit_txn(struct pmu *pmu)
for (i = cpuhw->n_txn_start; i < n; ++i)
cpuhw->event[i]->hw.config = cpuhw->events[i];
- cpuhw->group_flag &= ~PERF_EVENT_TXN;
+ cpuhw->txn_flags = 0;
perf_pmu_enable(pmu);
return 0;
}

arch/powerpc/perf/hv-24x7.c

View file
diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
index 527c8b9..9f9dfda 100644
--- a/arch/powerpc/perf/hv-24x7.c
+++ b/arch/powerpc/perf/hv-24x7.c
@@ -142,6 +142,15 @@ static struct attribute_group event_long_desc_group = {
static struct kmem_cache *hv_page_cache;
+DEFINE_PER_CPU(int, hv_24x7_txn_flags);
+DEFINE_PER_CPU(int, hv_24x7_txn_err);
+
+struct hv_24x7_hw {
+ struct perf_event *events[255];
+};
+
+DEFINE_PER_CPU(struct hv_24x7_hw, hv_24x7_hw);
+
/*
* request_buffer and result_buffer are not required to be 4k aligned,
* but are not allowed to cross any 4k boundary. Aligning them to 4k is
@@ -1231,9 +1240,48 @@ static void update_event_count(struct perf_event *event, u64 now)
static void h_24x7_event_read(struct perf_event *event)
{
u64 now;
+ struct hv_24x7_request_buffer *request_buffer;
+ struct hv_24x7_hw *h24x7hw;
+ int txn_flags;
+
+ txn_flags = __this_cpu_read(hv_24x7_txn_flags);
+
+ /*
+ * If in a READ transaction, add this counter to the list of
+ * counters to read during the next HCALL (i.e commit_txn()).
+ * If not in a READ transaction, go ahead and make the HCALL
+ * to read this counter by itself.
+ */
+
+ if (txn_flags & PERF_PMU_TXN_READ) {
+ int i;
+ int ret;
- now = h_24x7_get_value(event);
- update_event_count(event, now);
+ if (__this_cpu_read(hv_24x7_txn_err))
+ return;
+
+ request_buffer = (void *)get_cpu_var(hv_24x7_reqb);
+
+ ret = add_event_to_24x7_request(event, request_buffer);
+ if (ret) {
+ __this_cpu_write(hv_24x7_txn_err, ret);
+ } else {
+ /*
+ * Assoicate the event with the HCALL request index,
+ * so ->commit_txn() can quickly find/update count.
+ */
+ i = request_buffer->num_requests - 1;
+
+ h24x7hw = &get_cpu_var(hv_24x7_hw);
+ h24x7hw->events[i] = event;
+ put_cpu_var(h24x7hw);
+ }
+
+ put_cpu_var(hv_24x7_reqb);
+ } else {
+ now = h_24x7_get_value(event);
+ update_event_count(event, now);
+ }
}
static void h_24x7_event_start(struct perf_event *event, int flags)
@@ -1255,6 +1303,117 @@ static int h_24x7_event_add(struct perf_event *event, int flags)
return 0;
}
+/*
+ * 24x7 counters only support READ transactions. They are
+ * always counting and dont need/support ADD transactions.
+ * Cache the flags, but otherwise ignore transactions that
+ * are not PERF_PMU_TXN_READ.
+ */
+static void h_24x7_event_start_txn(struct pmu *pmu, unsigned int flags)
+{
+ struct hv_24x7_request_buffer *request_buffer;
+ struct hv_24x7_data_result_buffer *result_buffer;
+
+ /* We should not be called if we are already in a txn */
+ WARN_ON_ONCE(__this_cpu_read(hv_24x7_txn_flags));
+
+ __this_cpu_write(hv_24x7_txn_flags, flags);
+ if (flags & ~PERF_PMU_TXN_READ)
+ return;
+
+ request_buffer = (void *)get_cpu_var(hv_24x7_reqb);
+ result_buffer = (void *)get_cpu_var(hv_24x7_resb);
+
+ init_24x7_request(request_buffer, result_buffer);
+
+ put_cpu_var(hv_24x7_resb);
+ put_cpu_var(hv_24x7_reqb);
+}
+
+/*
+ * Clean up transaction state.
+ *
+ * NOTE: Ignore state of request and result buffers for now.
+ * We will initialize them during the next read/txn.
+ */
+static void reset_txn(void)
+{
+ __this_cpu_write(hv_24x7_txn_flags, 0);
+ __this_cpu_write(hv_24x7_txn_err, 0);
+}
+
+/*
+ * 24x7 counters only support READ transactions. They are always counting
+ * and dont need/support ADD transactions. Clear ->txn_flags but otherwise
+ * ignore transactions that are not of type PERF_PMU_TXN_READ.
+ *
+ * For READ transactions, submit all pending 24x7 requests (i.e requests
+ * that were queued by h_24x7_event_read()), to the hypervisor and update
+ * the event counts.
+ */
+static int h_24x7_event_commit_txn(struct pmu *pmu)
+{
+ struct hv_24x7_request_buffer *request_buffer;
+ struct hv_24x7_data_result_buffer *result_buffer;
+ struct hv_24x7_result *resb;
+ struct perf_event *event;
+ u64 count;
+ int i, ret, txn_flags;
+ struct hv_24x7_hw *h24x7hw;
+
+ txn_flags = __this_cpu_read(hv_24x7_txn_flags);
+ WARN_ON_ONCE(!txn_flags);
+
+ ret = 0;
+ if (txn_flags & ~PERF_PMU_TXN_READ)
+ goto out;
+
+ ret = __this_cpu_read(hv_24x7_txn_err);
+ if (ret)
+ goto out;
+
+ request_buffer = (void *)get_cpu_var(hv_24x7_reqb);
+ result_buffer = (void *)get_cpu_var(hv_24x7_resb);
+
+ ret = make_24x7_request(request_buffer, result_buffer);
+ if (ret) {
+ log_24x7_hcall(request_buffer, result_buffer, ret);
+ goto put_reqb;
+ }
+
+ h24x7hw = &get_cpu_var(hv_24x7_hw);
+
+ /* Update event counts from hcall */
+ for (i = 0; i < request_buffer->num_requests; i++) {
+ resb = &result_buffer->results[i];
+ count = be64_to_cpu(resb->elements[0].element_data[0]);
+ event = h24x7hw->events[i];
+ h24x7hw->events[i] = NULL;
+ update_event_count(event, count);
+ }
+
+ put_cpu_var(hv_24x7_hw);
+
+put_reqb:
+ put_cpu_var(hv_24x7_resb);
+ put_cpu_var(hv_24x7_reqb);
+out:
+ reset_txn();
+ return ret;
+}
+
+/*
+ * 24x7 counters only support READ transactions. They are always counting
+ * and dont need/support ADD transactions. However, regardless of type
+ * of transaction, all we need to do is cleanup, so we don't have to check
+ * the type of transaction.
+ */
+static void h_24x7_event_cancel_txn(struct pmu *pmu)
+{
+ WARN_ON_ONCE(!__this_cpu_read(hv_24x7_txn_flags));
+ reset_txn();
+}
+
static struct pmu h_24x7_pmu = {
.task_ctx_nr = perf_invalid_context,
@@ -1266,6 +1425,9 @@ static struct pmu h_24x7_pmu = {
.start = h_24x7_event_start,
.stop = h_24x7_event_stop,
.read = h_24x7_event_read,
+ .start_txn = h_24x7_event_start_txn,
+ .commit_txn = h_24x7_event_commit_txn,
+ .cancel_txn = h_24x7_event_cancel_txn,
};
static int hv_24x7_init(void)

arch/powerpc/perf/power8-pmu.c

View file
diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
index 396351d..7d5e295 100644
--- a/arch/powerpc/perf/power8-pmu.c
+++ b/arch/powerpc/perf/power8-pmu.c
@@ -676,6 +676,9 @@ static u64 power8_bhrb_filter_map(u64 branch_sample_type)
if (branch_sample_type & PERF_SAMPLE_BRANCH_IND_CALL)
return -1;
+ if (branch_sample_type & PERF_SAMPLE_BRANCH_CALL)
+ return -1;
+
if (branch_sample_type & PERF_SAMPLE_BRANCH_ANY_CALL) {
pmu_bhrb_filter |= POWER8_MMCRA_IFM1;
return pmu_bhrb_filter;

arch/s390/kernel/perf_cpum_cf.c

View file
diff --git a/arch/s390/kernel/perf_cpum_cf.c b/arch/s390/kernel/perf_cpum_cf.c
index a956340..929c147 100644
--- a/arch/s390/kernel/perf_cpum_cf.c
+++ b/arch/s390/kernel/perf_cpum_cf.c
@@ -72,6 +72,7 @@ struct cpu_hw_events {
atomic_t ctr_set[CPUMF_CTR_SET_MAX];
u64 state, tx_state;
unsigned int flags;
+ unsigned int txn_flags;
};
static DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = {
.ctr_set = {
@@ -82,6 +83,7 @@ static DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = {
},
.state = 0,
.flags = 0,
+ .txn_flags = 0,
};
static int get_counter_set(u64 event)
@@ -538,7 +540,7 @@ static int cpumf_pmu_add(struct perf_event *event, int flags)
* For group events transaction, the authorization check is
* done in cpumf_pmu_commit_txn().
*/
- if (!(cpuhw->flags & PERF_EVENT_TXN))
+ if (!(cpuhw->txn_flags & PERF_PMU_TXN_ADD))
if (validate_ctr_auth(&event->hw))
return -ENOENT;
@@ -576,13 +578,22 @@ static void cpumf_pmu_del(struct perf_event *event, int flags)
/*
* Start group events scheduling transaction.
* Set flags to perform a single test at commit time.
+ *
+ * We only support PERF_PMU_TXN_ADD transactions. Save the
+ * transaction flags but otherwise ignore non-PERF_PMU_TXN_ADD
+ * transactions.
*/
-static void cpumf_pmu_start_txn(struct pmu *pmu)
+static void cpumf_pmu_start_txn(struct pmu *pmu, unsigned int txn_flags)
{
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
+ WARN_ON_ONCE(cpuhw->txn_flags); /* txn already in flight */
+
+ cpuhw->txn_flags = txn_flags;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
+
perf_pmu_disable(pmu);
- cpuhw->flags |= PERF_EVENT_TXN;
cpuhw->tx_state = cpuhw->state;
}
@@ -593,11 +604,18 @@ static void cpumf_pmu_start_txn(struct pmu *pmu)
*/
static void cpumf_pmu_cancel_txn(struct pmu *pmu)
{
+ unsigned int txn_flags;
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
+ WARN_ON_ONCE(!cpuhw->txn_flags); /* no txn in flight */
+
+ txn_flags = cpuhw->txn_flags;
+ cpuhw->txn_flags = 0;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
+
WARN_ON(cpuhw->tx_state != cpuhw->state);
- cpuhw->flags &= ~PERF_EVENT_TXN;
perf_pmu_enable(pmu);
}
@@ -611,13 +629,20 @@ static int cpumf_pmu_commit_txn(struct pmu *pmu)
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
u64 state;
+ WARN_ON_ONCE(!cpuhw->txn_flags); /* no txn in flight */
+
+ if (cpuhw->txn_flags & ~PERF_PMU_TXN_ADD) {
+ cpuhw->txn_flags = 0;
+ return 0;
+ }
+
/* check if the updated state can be scheduled */
state = cpuhw->state & ~((1 << CPUMF_LCCTL_ENABLE_SHIFT) - 1);
state >>= CPUMF_LCCTL_ENABLE_SHIFT;
if ((state & cpuhw->info.auth_ctl) != state)
return -ENOENT;
- cpuhw->flags &= ~PERF_EVENT_TXN;
+ cpuhw->txn_flags = 0;
perf_pmu_enable(pmu);
return 0;
}

arch/sparc/kernel/perf_event.c

View file
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index 689db65..b0da5ae 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -108,7 +108,7 @@ struct cpu_hw_events {
/* Enabled/disable state. */
int enabled;
- unsigned int group_flag;
+ unsigned int txn_flags;
};
static DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, };
@@ -1379,7 +1379,7 @@ static int sparc_pmu_add(struct perf_event *event, int ef_flags)
* skip the schedulability test here, it will be performed
* at commit time(->commit_txn) as a whole
*/
- if (cpuc->group_flag & PERF_EVENT_TXN)
+ if (cpuc->txn_flags & PERF_PMU_TXN_ADD)
goto nocheck;
if (check_excludes(cpuc->event, n0, 1))
@@ -1494,12 +1494,17 @@ static int sparc_pmu_event_init(struct perf_event *event)
* Set the flag to make pmu::enable() not perform the
* schedulability test, it will be performed at commit time
*/
-static void sparc_pmu_start_txn(struct pmu *pmu)
+static void sparc_pmu_start_txn(struct pmu *pmu, unsigned int txn_flags)
{
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
+ WARN_ON_ONCE(cpuhw->txn_flags); /* txn already in flight */
+
+ cpuhw->txn_flags = txn_flags;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
+
perf_pmu_disable(pmu);
- cpuhw->group_flag |= PERF_EVENT_TXN;
}
/*
@@ -1510,8 +1515,15 @@ static void sparc_pmu_start_txn(struct pmu *pmu)
static void sparc_pmu_cancel_txn(struct pmu *pmu)
{
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
+ unsigned int txn_flags;
+
+ WARN_ON_ONCE(!cpuhw->txn_flags); /* no txn in flight */
+
+ txn_flags = cpuhw->txn_flags;
+ cpuhw->txn_flags = 0;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
- cpuhw->group_flag &= ~PERF_EVENT_TXN;
perf_pmu_enable(pmu);
}
@@ -1528,14 +1540,20 @@ static int sparc_pmu_commit_txn(struct pmu *pmu)
if (!sparc_pmu)
return -EINVAL;
- cpuc = this_cpu_ptr(&cpu_hw_events);
+ WARN_ON_ONCE(!cpuc->txn_flags); /* no txn in flight */
+
+ if (cpuc->txn_flags & ~PERF_PMU_TXN_ADD) {
+ cpuc->txn_flags = 0;
+ return 0;
+ }
+
n = cpuc->n_events;
if (check_excludes(cpuc->event, 0, n))
return -EINVAL;
if (sparc_check_constraints(cpuc->event, cpuc->events, n))
return -EAGAIN;
- cpuc->group_flag &= ~PERF_EVENT_TXN;
+ cpuc->txn_flags = 0;
perf_pmu_enable(pmu);
return 0;
}

arch/x86/kernel/cpu/Makefile

View file
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index 4eb065c..5803130 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -41,6 +41,7 @@ obj-$(CONFIG_CPU_SUP_INTEL) += perf_event_p6.o perf_event_knc.o perf_event_p4.o
obj-$(CONFIG_CPU_SUP_INTEL) += perf_event_intel_lbr.o perf_event_intel_ds.o perf_event_intel.o
obj-$(CONFIG_CPU_SUP_INTEL) += perf_event_intel_rapl.o perf_event_intel_cqm.o
obj-$(CONFIG_CPU_SUP_INTEL) += perf_event_intel_pt.o perf_event_intel_bts.o
+obj-$(CONFIG_CPU_SUP_INTEL) += perf_event_intel_cstate.o
obj-$(CONFIG_PERF_EVENTS_INTEL_UNCORE) += perf_event_intel_uncore.o \
perf_event_intel_uncore_snb.o \

arch/x86/kernel/cpu/intel_cacheinfo.c

View file
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
index be4febc..e38d338 100644
--- a/arch/x86/kernel/cpu/intel_cacheinfo.c
+++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
@@ -157,7 +157,7 @@ struct _cpuid4_info_regs {
struct amd_northbridge *nb;
};
-unsigned short num_cache_leaves;
+static unsigned short num_cache_leaves;
/* AMD doesn't have CPUID4. Emulate it here to report the same
information to the user. This makes some assumptions about the machine:
@@ -326,7 +326,7 @@ static void amd_calc_l3_indices(struct amd_northbridge *nb)
*
* @returns: the disabled index if used or negative value if slot free.
*/
-int amd_get_l3_disable_slot(struct amd_northbridge *nb, unsigned slot)
+static int amd_get_l3_disable_slot(struct amd_northbridge *nb, unsigned slot)
{
unsigned int reg = 0;
@@ -403,8 +403,8 @@ static void amd_l3_disable_index(struct amd_northbridge *nb, int cpu,
*
* @return: 0 on success, error status on failure
*/
-int amd_set_l3_disable_slot(struct amd_northbridge *nb, int cpu, unsigned slot,
- unsigned long index)
+static int amd_set_l3_disable_slot(struct amd_northbridge *nb, int cpu,
+ unsigned slot, unsigned long index)
{
int ret = 0;

arch/x86/kernel/cpu/perf_event.c

View file
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 66dd3fe..4562cf0 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -1175,7 +1175,7 @@ static int x86_pmu_add(struct perf_event *event, int flags)
* skip the schedulability test here, it will be performed
* at commit time (->commit_txn) as a whole.
*/
- if (cpuc->group_flag & PERF_EVENT_TXN)
+ if (cpuc->txn_flags & PERF_PMU_TXN_ADD)
goto done_collect;
ret = x86_pmu.schedule_events(cpuc, n, assign);
@@ -1326,7 +1326,7 @@ static void x86_pmu_del(struct perf_event *event, int flags)
* XXX assumes any ->del() called during a TXN will only be on
* an event added during that same TXN.
*/
- if (cpuc->group_flag & PERF_EVENT_TXN)
+ if (cpuc->txn_flags & PERF_PMU_TXN_ADD)
return;
/*
@@ -1748,11 +1748,22 @@ static inline void x86_pmu_read(struct perf_event *event)
* Start group events scheduling transaction
* Set the flag to make pmu::enable() not perform the
* schedulability test, it will be performed at commit time
+ *
+ * We only support PERF_PMU_TXN_ADD transactions. Save the
+ * transaction flags but otherwise ignore non-PERF_PMU_TXN_ADD
+ * transactions.
*/
-static void x86_pmu_start_txn(struct pmu *pmu)
+static void x86_pmu_start_txn(struct pmu *pmu, unsigned int txn_flags)
{
+ struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
+
+ WARN_ON_ONCE(cpuc->txn_flags); /* txn already in flight */
+
+ cpuc->txn_flags = txn_flags;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
+
perf_pmu_disable(pmu);
- __this_cpu_or(cpu_hw_events.group_flag, PERF_EVENT_TXN);
__this_cpu_write(cpu_hw_events.n_txn, 0);
}
@@ -1763,7 +1774,16 @@ static void x86_pmu_start_txn(struct pmu *pmu)
*/
static void x86_pmu_cancel_txn(struct pmu *pmu)
{
- __this_cpu_and(cpu_hw_events.group_flag, ~PERF_EVENT_TXN);
+ unsigned int txn_flags;
+ struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
+
+ WARN_ON_ONCE(!cpuc->txn_flags); /* no txn in flight */
+
+ txn_flags = cpuc->txn_flags;
+ cpuc->txn_flags = 0;
+ if (txn_flags & ~PERF_PMU_TXN_ADD)
+ return;
+
/*
* Truncate collected array by the number of events added in this
* transaction. See x86_pmu_add() and x86_pmu_*_txn().
@@ -1786,6 +1806,13 @@ static int x86_pmu_commit_txn(struct pmu *pmu)
int assign[X86_PMC_IDX_MAX];
int n, ret;
+ WARN_ON_ONCE(!cpuc->txn_flags); /* no txn in flight */
+
+ if (cpuc->txn_flags & ~PERF_PMU_TXN_ADD) {
+ cpuc->txn_flags = 0;
+ return 0;
+ }

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_bts.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_cstate.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_ds.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_lbr.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_pt.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_uncore.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_uncore.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_uncore_snb.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/tsc.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/lib/x86-opcode-map.txt

View file

This diff is incomplete. Download the complete patch.

include/linux/perf_event.h

View file

This diff is incomplete. Download the complete patch.

include/uapi/linux/perf_event.h

View file

This diff is incomplete. Download the complete patch.

kernel/events/core.c

View file

This diff is incomplete. Download the complete patch.

tools/build/.gitignore

View file

This diff is incomplete. Download the complete patch.

tools/build/Build

View file

This diff is incomplete. Download the complete patch.

tools/build/Build.include

View file

This diff is incomplete. Download the complete patch.

tools/build/Documentation/Build.txt

View file

This diff is incomplete. Download the complete patch.

tools/build/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/build/Makefile.build

View file

This diff is incomplete. Download the complete patch.

tools/build/Makefile.feature

View file

This diff is incomplete. Download the complete patch.

tools/build/Makefile.include

View file

This diff is incomplete. Download the complete patch.

tools/build/feature/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/build/fixdep.c

View file

This diff is incomplete. Download the complete patch.

tools/build/tests/ex/Build

View file

This diff is incomplete. Download the complete patch.

tools/build/tests/ex/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/build/tests/ex/ex.c

View file

This diff is incomplete. Download the complete patch.

tools/build/tests/ex/inc.c

View file

This diff is incomplete. Download the complete patch.

tools/build/tests/run.sh

View file

This diff is incomplete. Download the complete patch.

tools/include/linux/compiler.h

View file

This diff is incomplete. Download the complete patch.

tools/include/linux/err.h

View file

This diff is incomplete. Download the complete patch.

tools/include/linux/filter.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/Build

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/cpu.c

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/cpu.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/Build

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/debugfs.c

View before deletion

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/debugfs.h

View before deletion

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/findfs.c

View before deletion

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/findfs.h

View before deletion

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/fs.c

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/fs.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/tracefs.c

View before deletion

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/tracefs.h

View before deletion

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/tracing_path.c

View file

This diff is incomplete. Download the complete patch.

tools/lib/api/fs/tracing_path.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/bpf/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/lib/lockdep/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/lib/symbol/kallsyms.c

View file

This diff is incomplete. Download the complete patch.

tools/lib/symbol/kallsyms.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/traceevent/event-parse.c

View file

This diff is incomplete. Download the complete patch.

tools/lib/traceevent/event-parse.h

View file

This diff is incomplete. Download the complete patch.

tools/lib/traceevent/plugin_kvm.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/intel-pt.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/itrace.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-bench.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-inject.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-list.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-record.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-report.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-script.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-stat.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf-top.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/Documentation/perf.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/MANIFEST

View file

This diff is incomplete. Download the complete patch.

tools/perf/Makefile.perf

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/common.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/common.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/Build

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/include/arch-tests.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/Build

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/arch-tests.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/dwarf-unwind.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/gen-insn-x86-dat.awk

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/gen-insn-x86-dat.sh

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/insn-x86-dat-32.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/insn-x86-dat-64.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/insn-x86-dat-src.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/insn-x86.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/intel-cqm.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/perf-time-to-tsc.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/tests/rdpmc.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/util/dwarf-regs.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/arch/x86/util/intel-pt.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/bench/Build

View file

This diff is incomplete. Download the complete patch.

tools/perf/bench/mem-functions.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/bench/mem-memcpy.c

View before deletion

This diff is incomplete. Download the complete patch.

tools/perf/bench/numa.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/bench/sched-messaging.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-annotate.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-bench.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-evlist.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-help.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-inject.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-kmem.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-kvm.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-list.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-probe.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-record.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-report.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-sched.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-script.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-stat.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-top.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/builtin-trace.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/config/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/perf/perf.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/python/twatch.py

View file

This diff is incomplete. Download the complete patch.

tools/perf/scripts/python/export-to-postgresql.py

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/Build

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/bpf-script-example.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/builtin-test.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/code-reading.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/dwarf-unwind.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/evsel-tp-sched.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/hists_filter.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/make

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/mmap-basic.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/openat-syscall-all-cpus.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/openat-syscall-tp-fields.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/openat-syscall.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/parse-events.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/tests.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/topology.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/tests/vmlinux-kallsyms.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/trace/strace/groups/file

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/browser.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/browser.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/browsers/annotate.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/browsers/hists.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/browsers/map.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/browsers/scripts.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/hist.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/ui/tui/setup.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/Build

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/annotate.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/annotate.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/auxtrace.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/auxtrace.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/bpf-loader.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/bpf-loader.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/callchain.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/callchain.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/cpumap.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/cpumap.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/env.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/env.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/event.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/event.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/evlist.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/evlist.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/evsel.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/evsel.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/header.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/header.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/hist.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/hist.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/include/dwarf-regs.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/intel-pt-decoder/Build

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/intel-pt-decoder/intel-pt-decoder.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/intel-pt-decoder/intel-pt-log.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/intel-pt-decoder/intel-pt-log.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/intel-pt-decoder/x86-opcode-map.txt

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/intel-pt.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/machine.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/machine.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/map.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/map.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-branch-options.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-events.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-events.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-events.l

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-events.y

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-options.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/parse-options.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/pmu.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/probe-event.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/probe-event.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/probe-file.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/probe-file.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/probe-finder.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/python.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/scripting-engines/trace-event-perl.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/scripting-engines/trace-event-python.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/session.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/session.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/sort.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/sort.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/srcline.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/stat.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/stat.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/strbuf.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/strbuf.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/symbol-minimal.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/symbol.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/symbol.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/trace-event-info.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/trace-event.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/trace-event.h

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/unwind-libunwind.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/usage.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/util.c

View file

This diff is incomplete. Download the complete patch.

tools/perf/util/util.h

View file

This diff is incomplete. Download the complete patch.

tools/vm/page-types.c

View file

This diff is incomplete. Download the complete patch.