1. 16 1月, 2016 6 次提交
  2. 13 1月, 2016 1 次提交
    • I
      Merge tag 'perf-core-for-mingo' of... · c3660884
      Ingo Molnar 提交于
      Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
      
      Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
      
      New, user visible features:
      
        - Add --buildid-all option to 'perf record' to avoid processing
          samples, just collecting build-ids for _all_ the DSOs that appears
          in PERF_RECORD_MMAP records (Namhyung Kim)
      
        - Add some more usage tips to appear in the hists browser
          (top & report) (Namhyung Kim, Andi Kleen)
      
        - Fix mmap2 event allocation in synthesize code, where we were
          allocating space just for PERF_RECORD_MMAP, the older variant,
          which could lead to corner case problems (Wang Nan)
      
      Infrastructure fixes:
      
        - Make list.h self-sufficient, removing one more reference to
          kernel headers that lead to recent breakage when some rculist
          change was made in the kernel sources. (Josh Poimboeuf)
      
          Add missing NORETURN define for parse-options.h in
          tools/lib/subcmd (Josh Poimboeuf)
      
        - Fallback to srcdir/Documentation/ when not finding tips.txt
          elsewhere (Namhyung Kim)
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      c3660884
  3. 12 1月, 2016 26 次提交
    • N
      perf tools: Fallback to srcdir/Documentation/tips.txt · 34b7b0f9
      Namhyung Kim 提交于
      Some people don't install perf, but just use compiled version in the
      source.  Fallback to lookup the source directory for those poor guys. :)
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1452334589-8782-4-git-send-email-namhyung@kernel.org
      [ Make perf_tip() return NULL for ENOENT, making the fallback to really take place ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      34b7b0f9
    • N
      perf ui/tui: Print helpline message as is · 090cff3e
      Namhyung Kim 提交于
      When a tip message contains a percent sign, it was treated printf format
      specifier so broken string was printed like below.
      
        Tip: Limit to show entries above 577nly: perf report --percent-limit 5
                                         ^^^
      
      As ui_browser__show receives format string, pass additional "%s" so that
      the help (tip) message can be printed as is.
      
        Tip: Limit to show entries above 5% only: perf report --percent-limit 5
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1452509594-13616-1-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      090cff3e
    • N
      perf tools: Set and pass DOCDIR to builtin-report.c · 84cfac7f
      Namhyung Kim 提交于
      It'll be used to locate perf document directory to find tips.txt in case
      it's not installed on the system.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1452334589-8782-3-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      84cfac7f
    • N
      perf tools: Add file_only config option to strlist · dd8232bc
      Namhyung Kim 提交于
      If strlist_config.dirname is present, the strlist__new() tries to load
      stirngs from dirname/list file first but if it failes it falls back to
      add 'list' as string.  But sometimes it's not desired so adds new
      file_only field to prevent it.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1452334589-8782-2-git-send-email-namhyung@kernel.org
      [ Add documentation for strlist_config::file_only, in the struct definition */
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      dd8232bc
    • N
      perf tools: Add more usage tips · 09f19854
      Namhyung Kim 提交于
      Thanks to Andi Kleen for providing useful tips.
      Suggested-by: NAndi Kleen <andi@firstfloor.org>
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1452508510-28316-1-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      09f19854
    • N
      perf record: Add --buildid-all option · 6156681b
      Namhyung Kim 提交于
      The --buildid-all option is to record build-id of all DSOs in the file.
      It might be very costly to postprocess samples to find which DSO hits.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/r/1452519429-31779-1-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      6156681b
    • J
      tools subcmd: Add missing NORETURN define for parse-options.h · 24b1e5d7
      Josh Poimboeuf 提交于
      parse-options.h uses the NORETURN macro without defining it.  perf
      doesn't see a build error because it defines the macro in util.h before
      including parse-options.h.  But any other tool including it will see an
      error.
      
      Define the macro in parse-options.h (if not already defined) so that
      other tools can include it.
      Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Bernd Petrovitsch <bernd@petrovitsch.priv.at>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Chris J Arges <chris.j.arges@canonical.com>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Pedro Alves <palves@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: live-patching@vger.kernel.org
      Cc: x86@kernel.org
      Link: http://lkml.kernel.org/r/6c16294ac6dbe5e2ca28fd935fe4389996588564.1450442274.git.jpoimboe@redhat.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      24b1e5d7
    • J
      tools: Fix formatting of the "make -C tools" help message · 20a7add8
      Josh Poimboeuf 提交于
      Align the x86_energy_perf_policy line with the others and restore the
      original alphabetical sorting.
      Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Bernd Petrovitsch <bernd@petrovitsch.priv.at>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Chris J Arges <chris.j.arges@canonical.com>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Pedro Alves <palves@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: live-patching@vger.kernel.org
      Cc: x86@kernel.org
      Link: http://lkml.kernel.org/r/572931227adbf1fc9ca96e1dae3ef2e89387feca.1450442274.git.jpoimboe@redhat.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      20a7add8
    • J
      tools: Make list.h self-sufficient · d1b39d41
      Josh Poimboeuf 提交于
      Commit 7f5f873c ("rculist: Use WRITE_ONCE() when deleting from
      reader-visible list") added the use of the WRITE_ONCE macro to the
      kernel version of list.h, which broke the stacktool build because the
      tools list.h includes the kernel list.h.
      
      Avoid this type of situation in the future and make list.h
      self-sufficient by copying the kernel list.h routines directly into
      tools list.h.
      
      This is a straight copy except for adjustments to the include statements
      and copying of the tools-specific list routines (list_del_range and
      list_for_each_from).
      Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Bernd Petrovitsch <bernd@petrovitsch.priv.at>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Chris J Arges <chris.j.arges@canonical.com>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Pedro Alves <palves@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: live-patching@vger.kernel.org
      Cc: x86@kernel.org
      Link: http://lkml.kernel.org/r/59cdc19c6589d1b5ef43d83b0e2d5a4a40301374.1450442274.git.jpoimboe@redhat.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      d1b39d41
    • W
      perf tools: Fix mmap2 event allocation in synthesize code · b0fb978e
      Wang Nan 提交于
      perf_event__synthesize_mmap_events() issues mmap2 events, but the memory
      of that event is allocated using:
      
       mmap_event = malloc(sizeof(mmap_event->mmap) + machine->id_hdr_size);
      
      If path of mmap source file is long (near PATH_MAX), random crash would
      happen. Should use sizeof(mmap_event->mmap2).
      
      Fix two memory allocations.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Reviewed-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452593524-138970-1-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b0fb978e
    • J
      perf stat: Fix recort_usage typo · 8a59f3cc
      Jiri Olsa 提交于
      Markus reported gcc 6 complains when compiling perf stat command:
      
        builtin-stat.c:1591:27: error: ‘recort_usage’ defined but not used
        [-Werror=unused-const-variable]
         static const char * const recort_usage[] = {
                                   ^~~~~~~~~~~~
      
      I fixed the typo and realized we already export record_usage, so I also
      prefixed it with stat (and included report_usage).
      Reported-by: NMarkus Trippelsdorf <markus@trippelsdorf.de>
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1452591329-27620-1-git-send-email-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8a59f3cc
    • I
      Merge tag 'perf-core-for-mingo' of... · 0bd106d2
      Ingo Molnar 提交于
      Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
      
      Pull perf tooling fixes from Arnaldo Carvalho de Melo:
      
      " - Fix a few clean targets in tools/ (Jiri Olsa)
      
        - Add missing sources to perf's MANIFEST, fixing the out of tree build with
          'make perf-tar*-src-pkg' tarballs (Jiri Olsa)
      
        - Fix bpf related build problems in PowerPC (Naveen N. Rao, Wang Nan)
      
        - 'make -C tools/perf build-test' fixes (Wang Nan)
      
        - Fix 'perf test hist' entry (Wang Nan)
      
        - Add BPF feature check to test-all, as in an environment with all other
          features enabled, BPF would be considered enabled without doing real
          feature check.  (Wang Nan)"
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      0bd106d2
    • L
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5cb52b5e
      Linus Torvalds 提交于
      Pull perf updates from Ingo Molnar:
       "Kernel side changes:
      
         - Intel Knights Landing support.  (Harish Chegondi)
      
         - Intel Broadwell-EP uncore PMU support.  (Kan Liang)
      
         - Core code improvements.  (Peter Zijlstra.)
      
         - Event filter, LBR and PEBS fixes.  (Stephane Eranian)
      
         - Enable cycles:pp on Intel Atom.  (Stephane Eranian)
      
         - Add cycles:ppp support for Skylake.  (Andi Kleen)
      
         - Various x86 NMI overhead optimizations.  (Andi Kleen)
      
         - Intel PT enhancements.  (Takao Indoh)
      
         - AMD cache events fix.  (Vince Weaver)
      
        Tons of tooling changes:
      
         - Show random perf tool tips in the 'perf report' bottom line
           (Namhyung Kim)
      
         - perf report now defaults to --group if the perf.data file has
           grouped events, try it with:
      
            # perf record -e '{cycles,instructions}' -a sleep 1
            [ perf record: Woken up 1 times to write data ]
            [ perf record: Captured and wrote 1.093 MB perf.data (1247 samples) ]
            # perf report
            # Samples: 1K of event 'anon group { cycles, instructions }'
            # Event count (approx.): 1955219195
            #
            #       Overhead  Command     Shared Object      Symbol
      
               2.86%   0.22%  swapper     [kernel.kallsyms]  [k] intel_idle
               1.05%   0.33%  firefox     libxul.so          [.] js::SetObjectElement
               1.05%   0.00%  kworker/0:3 [kernel.kallsyms]  [k] gen6_ring_get_seqno
               0.88%   0.17%  chrome      chrome             [.] 0x0000000000ee27ab
               0.65%   0.86%  firefox     libxul.so          [.] js::ValueToId<(js::AllowGC)1>
               0.64%   0.23%  JS Helper   libxul.so          [.] js::SplayTree<js::jit::LiveRange*, js::jit::LiveRange>::splay
               0.62%   1.27%  firefox     libxul.so          [.] js::GetIterator
               0.61%   1.74%  firefox     libxul.so          [.] js::NativeSetProperty
               0.61%   0.31%  firefox     libxul.so          [.] js::SetPropertyByDefining
      
         - Introduce the 'perf stat record/report' workflow:
      
           Generate perf.data files from 'perf stat', to tap into the
           scripting capabilities perf has instead of defining a 'perf stat'
           specific scripting support to calculate event ratios, etc.
      
           Simple example:
      
              $ perf stat record -e cycles usleep 1
      
               Performance counter stats for 'usleep 1':
      
                     1,134,996      cycles
      
                   0.000670644 seconds time elapsed
      
              $ perf stat report
      
               Performance counter stats for '/home/acme/bin/perf stat record -e cycles usleep 1':
      
                     1,134,996      cycles
      
                   0.000670644 seconds time elapsed
      
              $
      
           It generates PERF_RECORD_ userspace records to store the details:
      
              $ perf report -D | grep PERF_RECORD
              0xf0 [0x28]: PERF_RECORD_THREAD_MAP nr: 1 thread: 27637
              0x118 [0x12]: PERF_RECORD_CPU_MAP nr: 1 cpu: 65535
              0x12a [0x40]: PERF_RECORD_STAT_CONFIG
              0x16a [0x30]: PERF_RECORD_STAT
              -1 -1 0x19a [0x40]: PERF_RECORD_MMAP -1/0: [0xffffffff81000000(0x1f000000) @ 0xffffffff81000000]: x [kernel.kallsyms]_text
              0x1da [0x18]: PERF_RECORD_STAT_ROUND
              [acme@ssdandy linux]$
      
           An effort was made to make perf.data files generated like this to
           not generate cryptic messages when processed by older tools.
      
           The 'perf script' bits need rebasing, will go up later.
      
         - Make command line options always available, even when they depend
           on some feature being enabled, warning the user about use of such
           options (Wang Nan)
      
         - Support hw breakpoint events (mem:0xAddress) in the default output
           mode in 'perf script' (Wang Nan)
      
         - Fixes and improvements for supporting annotating ARM binaries,
           support ARM call and jump instructions, more work needed to have
           arch specific stuff separated into tools/perf/arch/*/annotate/
           (Russell King)
      
         - Add initial 'perf config' command, for now just with a --list
           command to the contents of the configuration file in use and a
           basic man page describing its format, commands for doing edits and
           detailed documentation are being reviewed and proof-read.  (Taeung
           Song)
      
         - Allows BPF scriptlets specify arguments to be fetched using DWARF
           info, using a prologue generated at compile/build time (He Kuang,
           Wang Nan)
      
         - Allow attaching BPF scriptlets to module symbols (Wang Nan)
      
         - Allow attaching BPF scriptlets to userspace code using uprobe (Wang
           Nan)
      
         - BPF programs now can specify 'perf probe' tunables via its section
           name, separating key=val values using semicolons (Wang Nan)
      
           Testing some of these new BPF features:
      
              Use case: get callchains when receiving SSL packets, filter then in the
                        kernel, at arbitrary place.
      
              # cat ssl.bpf.c
              #define SEC(NAME) __attribute__((section(NAME), used))
      
              struct pt_regs;
      
              SEC("func=__inet_lookup_established hnum")
              int func(struct pt_regs *ctx, int err, unsigned short port)
              {
                      return err == 0 && port == 443;
              }
      
              char _license[] SEC("license") = "GPL";
              int  _version   SEC("version") = LINUX_VERSION_CODE;
              #
              # perf record -a -g -e ssl.bpf.c
              ^C[ perf record: Woken up 1 times to write data ]
              [ perf record: Captured and wrote 0.787 MB perf.data (3 samples) ]
              # perf script | head -30
              swapper     0 [000] 58783.268118: perf_bpf_probe:func: (ffffffff816a0f60) hnum=0x1bb
                 8a0f61 __inet_lookup_established (/lib/modules/4.3.0+/build/vmlinux)
                 896def ip_rcv_finish (/lib/modules/4.3.0+/build/vmlinux)
                 8976c2 ip_rcv (/lib/modules/4.3.0+/build/vmlinux)
                 855eba __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
                 8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
                 8572a8 process_backlog (/lib/modules/4.3.0+/build/vmlinux)
                 856b11 net_rx_action (/lib/modules/4.3.0+/build/vmlinux)
                 2a284b __do_softirq (/lib/modules/4.3.0+/build/vmlinux)
                 2a2ba3 irq_exit (/lib/modules/4.3.0+/build/vmlinux)
                 96b7a4 do_IRQ (/lib/modules/4.3.0+/build/vmlinux)
                 969807 ret_from_intr (/lib/modules/4.3.0+/build/vmlinux)
                 2dede5 cpu_startup_entry (/lib/modules/4.3.0+/build/vmlinux)
                 95d5bc rest_init (/lib/modules/4.3.0+/build/vmlinux)
                1163ffa start_kernel ([kernel.vmlinux].init.text)
                11634d7 x86_64_start_reservations ([kernel.vmlinux].init.text)
                1163623 x86_64_start_kernel ([kernel.vmlinux].init.text)
      
              qemu-system-x86  9178 [003] 58785.792417: perf_bpf_probe:func: (ffffffff816a0f60) hnum=0x1bb
                 8a0f61 __inet_lookup_established (/lib/modules/4.3.0+/build/vmlinux)
                 896def ip_rcv_finish (/lib/modules/4.3.0+/build/vmlinux)
                 8976c2 ip_rcv (/lib/modules/4.3.0+/build/vmlinux)
                 855eba __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
                 8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
                 856660 netif_receive_skb_internal (/lib/modules/4.3.0+/build/vmlinux)
                 8566ec netif_receive_skb_sk (/lib/modules/4.3.0+/build/vmlinux)
                   430a br_handle_frame_finish ([bridge])
                   48bc br_handle_frame ([bridge])
                 855f44 __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
                 8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
              #
      
         - Use 'perf probe' various options to list functions, see what
           variables can be collected at any given point, experiment first
           collecting without a filter, then filter, use it together with
           'perf trace', 'perf top', with or without callchains, if it
           explodes, please tell us!
      
         - Introduce a new callchain mode: "folded", that will list per line
           representations of all callchains for a give histogram entry,
           facilitating 'perf report' output processing by other tools, such
           as Brendan Gregg's flamegraph tools (Namhyung Kim)
      
           E.g:
      
              # perf report | grep -v ^# | head
                 18.37%     0.00%  swapper  [kernel.kallsyms]   [k] cpu_startup_entry
                                 |
                                 ---cpu_startup_entry
                                    |
                                    |--12.07%--start_secondary
                                    |
                                     --6.30%--rest_init
                                               start_kernel
                                               x86_64_start_reservations
                                               x86_64_start_kernel
               #
      
           Becomes, in "folded" mode:
      
              # perf report -g folded | grep -v ^# | head -5
                  18.37%     0.00%  swapper [kernel.kallsyms]   [k] cpu_startup_entry
                12.07% cpu_startup_entry;start_secondary
                 6.30% cpu_startup_entry;rest_init;start_kernel;x86_64_start_reservations;x86_64_start_kernel
                  16.90%     0.00%  swapper [kernel.kallsyms]   [k] call_cpuidle
                11.23% call_cpuidle;cpu_startup_entry;start_secondary
                 5.67% call_cpuidle;cpu_startup_entry;rest_init;start_kernel;x86_64_start_reservations;x86_64_start_kernel
                  16.90%     0.00%  swapper [kernel.kallsyms]   [k] cpuidle_enter
                11.23% cpuidle_enter;call_cpuidle;cpu_startup_entry;start_secondary
                 5.67% cpuidle_enter;call_cpuidle;cpu_startup_entry;rest_init;start_kernel;x86_64_start_reservations;x86_64_start_kernel
                  15.12%     0.00%  swapper [kernel.kallsyms]   [k] cpuidle_enter_state
               #
      
           The user can also select one of "count", "period" or "percent" as
           the first column.
      
        ... and lots of infrastructure enhancements, plus fixes and other
        changes, features I failed to list - see the shortlog and the git log
        for details"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (271 commits)
        perf evlist: Add --trace-fields option to show trace fields
        perf record: Store data mmaps for dwarf unwind
        perf libdw: Check for mmaps also in MAP__VARIABLE tree
        perf unwind: Check for mmaps also in MAP__VARIABLE tree
        perf unwind: Use find_map function in access_dso_mem
        perf evlist: Remove perf_evlist__(enable|disable)_event functions
        perf evlist: Make perf_evlist__open() open evsels with their cpus and threads (like perf record does)
        perf report: Show random usage tip on the help line
        perf hists: Export a couple of hist functions
        perf diff: Use perf_hpp__register_sort_field interface
        perf tools: Add overhead/overhead_children keys defaults via string
        perf tools: Remove list entry from struct sort_entry
        perf tools: Include all tools/lib directory for tags/cscope/TAGS targets
        perf script: Align event name properly
        perf tools: Add missing headers in perf's MANIFEST
        perf tools: Do not show trace command if it's not compiled in
        perf report: Change default to use event group view
        perf top: Decay periods in callchains
        tools lib: Move bitmap.[ch] from tools/perf/ to tools/{lib,include}/
        tools lib: Sync tools/lib/find_bit.c with the kernel
        ...
      5cb52b5e
    • W
      perf test: Reset err after using it hold errcode in hist testcases · b0500c16
      Wang Nan 提交于
      All hists test cases forget to reset err after using it to hold an
      error code. If error occure in setup_fake_machine() it incorrectly
      return TEST_OK.
      
      This patch fixes it.
      Suggested-and-Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-13-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b0500c16
    • W
      perf test: Fix false TEST_OK result for 'perf test hist' · 71b3ee7e
      Wang Nan 提交于
      Commit 71d6de64 ("perf test: Fix hist testcases when kptr_restrict is on")
      solves a double free problem when 'perf test hist' calling
      setup_fake_machine(). However, the result is still incorrect. For example:
      
        $ ./perf test -v 'filtering hist entries'
        25: Test filtering hist entries                              :
        --- start ---
        test child forked, pid 4186
        Cannot create kernel maps
        test child finished with 0
        ---- end ----
        Test filtering hist entries: Ok
      
      In this case the body of this test is not get executed at all, but the
      result is 'Ok'.
      
      Actually, in setup_fake_machine() there's no need to create real kernel
      maps. What we want are the fake maps. This patch removes the
      machine__create_kernel_maps() in setup_fake_machine(), so it won't be
      affected by kptr_restrict setting.
      
      Test result:
      
        $ cat /proc/sys/kernel/kptr_restrict
        1
        $ ~/perf test -v hist
        15: Test matching and linking multiple hists                 :
        --- start ---
        test child forked, pid 24031
        test child finished with 0
        ---- end ----
        Test matching and linking multiple hists: Ok
        [SNIP]
      Suggested-and-Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-12-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      71b3ee7e
    • W
      tools build: Add BPF feature check to test-all · 0c4d40d5
      Wang Nan 提交于
      The test-all.c file doesn't check BPF related features. For an
      environment with all other features enabled, BPF would be considered
      enabled without doing real feature check.
      
      This patch adds test-bpf.c into test-all.c.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-11-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0c4d40d5
    • N
      perf bpf: Fix build breakage due to libbpf · d5ef3140
      Naveen N. Rao 提交于
      perf build is currently (v4.4-rc5) broken on powerpc:
      
        bpf.c:28:4: error: #error __NR_bpf not defined. libbpf does not support
        your arch.
         #  error __NR_bpf not defined. libbpf does not support your arch.
            ^
      
      Fix this by including tools/scripts/Makefile.arch for the proper $ARCH
      macro. While at it, remove redundant LP64 macro definition.
      
      Also, since libbpf require $(srctree) now, detect the path of srctree
      like perf.
      Signed-off-by: NNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-10-git-send-email-wangnan0@huawei.com
      [Use tools/scripts/Makefile.arch]
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      d5ef3140
    • W
      tools: Move Makefile.arch from perf/config to tools/scripts · 935e6bd3
      Wang Nan 提交于
      After this patch other directories can use this architecture detector
      without directly including it from perf's directory. Libbpf would
      utilize it to get proper $(ARCH) so it can receive correct uapi include
      directory.
      Tested-by: NNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1452520124-2073-8-git-send-email-wangnan0@huawei.com
      [ Add missing srctree definition in tests/make ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@kernel.org>
      935e6bd3
    • W
      perf tools: Fix PowerPC native building · 8f9e05fb
      Wang Nan 提交于
      Checks BPF syscall number, turn off libbpf building on platform doesn't
      correctly support sys_bpf instead of blocking compiling.
      Reported-and-Tested-by: NNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-7-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8f9e05fb
    • L
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 24af98c4
      Linus Torvalds 提交于
      Pull locking updates from Ingo Molnar:
       "So we have a laundry list of locking subsystem changes:
      
         - continuing barrier API and code improvements
      
         - futex enhancements
      
         - atomics API improvements
      
         - pvqspinlock enhancements: in particular lock stealing and adaptive
           spinning
      
         - qspinlock micro-enhancements"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        futex: Allow FUTEX_CLOCK_REALTIME with FUTEX_WAIT op
        futex: Cleanup the goto confusion in requeue_pi()
        futex: Remove pointless put_pi_state calls in requeue()
        futex: Document pi_state refcounting in requeue code
        futex: Rename free_pi_state() to put_pi_state()
        futex: Drop refcount if requeue_pi() acquired the rtmutex
        locking/barriers, arch: Remove ambiguous statement in the smp_store_mb() documentation
        lcoking/barriers, arch: Use smp barriers in smp_store_release()
        locking/cmpxchg, arch: Remove tas() definitions
        locking/pvqspinlock: Queue node adaptive spinning
        locking/pvqspinlock: Allow limited lock stealing
        locking/pvqspinlock: Collect slowpath lock statistics
        sched/core, locking: Document Program-Order guarantees
        locking, sched: Introduce smp_cond_acquire() and use it
        locking/pvqspinlock, x86: Optimize the PV unlock code path
        locking/qspinlock: Avoid redundant read of next pointer
        locking/qspinlock: Prefetch the next node cacheline
        locking/qspinlock: Use _acquire/_release() versions of cmpxchg() & xchg()
        atomics: Add test for atomic operations with _relaxed variants
      24af98c4
    • W
      perf tools: Fix phony build target for build-test · 3167eea2
      Wang Nan 提交于
      make_kernelsrc and make_kernelsrc_tools are skiped if a previous
      build-test is done, because 'make build-test' creates two files with
      same names. To avoid this, they should be included in .PHONY list.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-3-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      3167eea2
    • W
      perf tools: Add -lutil in python lib list for broken python-config · 11dc0c57
      Wang Nan 提交于
      On some system the perf-config is broken, causes link failure like this:
      
         /usr/lib64/python2.7/config/libpython2.7.a(posixmodule.o): In function `posix_forkpty':
         /opt/wangnan/yocto-build/tmp-eglibc/work/x86_64-oe-linux/python/2.7.3-r0.3.1/Python-2.7.3/./Modules/posixmodule.c:3816: undefined reference to `forkpty'
         /usr/lib64/python2.7/config/libpython2.7.a(posixmodule.o): In function `posix_openpty':
         /opt/wangnan/yocto-build/tmp-eglibc/work/x86_64-oe-linux/python/2.7.3-r0.3.1/Python-2.7.3/./Modules/posixmodule.c:3756: undefined reference to `openpty'
         collect2: error: ld returned 1 exit status
        make[1]: *** [/home/wangnan/kernel-hydrogen/tools/perf/out/perf] Error 1
        make: *** [all] Error 2
      
        $ python-config --libs
        -lpthread -ldl -lpthread -lutil -lm -lpython2.7
      
      In this case a '-lutil' should be appended to -lpython2.7.
      
      (I know we have --start-group and --end-group. I can see them in command
      line of collect2 by strace. However it doesn't work. Seems I have a
      broken environment?)
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1452520124-2073-2-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      11dc0c57
    • L
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9061cbe6
      Linus Torvalds 提交于
      Pull RCU updates from Ingo Molnar:
       "The changes in this cycle were:
      
         - Adding transitivity uniformly to rcu_node structure ->lock
           acquisitions.  (This is implemented by the first two commits on top
           of v4.4-rc2 due to the pervasive nature of this change.)
      
         - Documentation updates, including RCU requirements.
      
         - Expedited grace-period changes.
      
         - Miscellaneous fixes.
      
         - Linked-list fixes, courtesy of KTSAN.
      
         - Torture-test updates.
      
         - Late-breaking fix to sysrq-generated crash.
      
        One thing I should note is that these pieces of documentation are
        fairly large files:
      
          .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
          .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++
      
        and are written in HTML, not the usual .txt style.  I hope they are
        fine"
      
      Paul McKenney explains the html docs:
       "For whatever it is worth, the reason for this unconventional choice
        was that attempts to do the diagrams in ASCII art failed miserably.
      
        And attempts to do ASCII art for the upcoming documentation of the
        data structures failed even more miserably"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (49 commits)
        sysrq: Fix warning in sysrq generated crash.
        list: Add lockless list traversal primitives
        rcu: Make rcu_gp_init() be bool rather than int
        rcu: Move wakeup out from under rnp->lock
        rcu: Fix comment for rcu_dereference_raw_notrace
        rcu: Don't redundantly disable irqs in rcu_irq_{enter,exit}()
        rcu: Make cpu_needs_another_gp() be bool
        rcu: Eliminate unused rcu_init_one() argument
        rcu: Remove TINY_RCU bloat from pointless boot parameters
        torture: Place console.log files correctly from the get-go
        torture: Abbreviate console error dump
        rcutorture: Print symbolic name for ->gp_state
        rcutorture: Print symbolic name for rcu_torture_writer_state
        rcutorture: Remove CONFIG_RCU_USER_QS from rcutorture selftest doc
        rcutorture: Default grace period to three minutes, allow override
        rcutorture:  Dump stack when GP kthread stalls
        rcutorture: Flag nonexistent RCU GP kthread
        rcutorture: Add batch number to script printout
        Documentation/memory-barriers.txt: Fix ACCESS_ONCE thinko
        documentation: Update RCU requirements based on expedited changes
        ...
      9061cbe6
    • L
      Merge branch 'work.xattr' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · ddf1d623
      Linus Torvalds 提交于
      Pull vfs xattr updates from Al Viro:
       "Andreas' xattr cleanup series.
      
        It's a followup to his xattr work that went in last cycle; -0.5KLoC"
      
      * 'work.xattr' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        xattr handlers: Simplify list operation
        ocfs2: Replace list xattr handler operations
        nfs: Move call to security_inode_listsecurity into nfs_listxattr
        xfs: Change how listxattr generates synthetic attributes
        tmpfs: listxattr should include POSIX ACL xattrs
        tmpfs: Use xattr handler infrastructure
        btrfs: Use xattr handler infrastructure
        vfs: Distinguish between full xattr names and proper prefixes
        posix acls: Remove duplicate xattr name definitions
        gfs2: Remove gfs2_xattr_acl_chmod
        vfs: Remove vfs_xattr_cmp
      ddf1d623
    • L
      Merge branch 'work.symlinks' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 32fb3784
      Linus Torvalds 提交于
      Pull vfs RCU symlink updates from Al Viro:
       "Replacement of ->follow_link/->put_link, allowing to stay in RCU mode
        even if the symlink is not an embedded one.
      
        No changes since the mailbomb on Jan 1"
      
      * 'work.symlinks' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        switch ->get_link() to delayed_call, kill ->put_link()
        kill free_page_put_link()
        teach nfs_get_link() to work in RCU mode
        teach proc_self_get_link()/proc_thread_self_get_link() to work in RCU mode
        teach shmem_get_link() to work in RCU mode
        teach page_get_link() to work in RCU mode
        replace ->follow_link() with new method that could stay in RCU mode
        don't put symlink bodies in pagecache into highmem
        namei: page_getlink() and page_follow_link_light() are the same thing
        ufs: get rid of ->setattr() for symlinks
        udf: don't duplicate page_symlink_inode_operations
        logfs: don't duplicate page_symlink_inode_operations
        switch befs long symlinks to page_symlink_operations
      32fb3784
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 19ccb28e
      Linus Torvalds 提交于
      Pull vfs compat_ioctl fixes from Al Viro:
       "This is basically Jann's patches from last week.  I have _not_
        included the stuff like switching i2c to ->compat_ioctl() into this
        one - those need more testing.
      
        Ideally I would like fs/compat_ioctl.c shrunk a lot, but that's a
        separate story"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        compat_ioctl: don't call do_ioctl under set_fs(KERNEL_DS)
        compat_ioctl: don't pass fd around when not needed
        compat_ioctl: don't look up the fd twice
      19ccb28e
  4. 11 1月, 2016 5 次提交
  5. 10 1月, 2016 2 次提交