Skip to content
Permalink
Liu-Bo/btrfs-d…

Commits on Dec 8, 2016

  1. Btrfs: add tracepoint for btrfs_get_blocks_dax_fault

    These TPs can help us monitor iomap content for dax reads and writes.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Liu Bo authored and fengguang committed Dec 8, 2016
  2. Btrfs: add mmap_sem to avoid race between page faults and truncate/ho…

    …le_punch
    
    How to serialise page_faults against truncate/hole punch?
    
    For truncate, we firstly update isize and then truncate pagecache in
    order to avoid race against page fault.
    For punch_hole, we use lock_extent and truncate pagecache.
    
    Although we have these rules to avoid the race, it's not easy to understand how
    they do that.  This adds a new rw_semaphore mmap_sem in inode and grab it for
    writing over truncate, hole punching and for reading over page faults.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Liu Bo authored and fengguang committed Dec 8, 2016
  3. Btrfs: add DAX support for nocow btrfs

    This has implemented DAX support for btrfs with nocow and single-device.
    
    DAX is developed for block devices that are memory-like in order to avoid
    double buffer in both page cache and the storage, so DAX can performs reads and
    writes directly to the storage device, and for those who prefer to using
    filesystem, filesystem dax support can help to map the storage into userspace
    for file-mapping.
    
    Since I haven't figure out how to map multiple devices to userspace without
    pagecache, this DAX support is only for single-device, and I don't think
    DAX(Direct Access) can work with cow, this is limited to nocow case.  I made
    this by setting nodatacow in dax mount option.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Liu Bo authored and fengguang committed Dec 8, 2016
  4. Btrfs: refactor btrfs_file_write_iter

    This adds a helper function btrfs_file_write_check for file checks, permission
    check and necessary time and size extention.
    
    With this, we simplify btrfs_file_write_iter by putting details into seperated
    buffered_write and direct_write callback.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Liu Bo authored and fengguang committed Dec 8, 2016
  5. Btrfs: set single device limit for dax usecase

    Dax on btrfs is not ready for multiple device.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Liu Bo authored and fengguang committed Dec 8, 2016
  6. Btrfs: add mount option for dax

    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Liu Bo authored and fengguang committed Dec 8, 2016

Commits on Dec 7, 2016

  1. Merge tag 'perf-core-for-mingo-20161207' of git://git.kernel.org/pub/…

    …scm/linux/kernel/git/acme/linux into perf/core
    
    Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
    
    Improvements:
    
     - Improve error message when analyzing file with required events in
       'perf sched timehist' (David Ahern)
    
    Fixes:
    
     - Force fixdep compilation to be done at the start of the build, fixing
       some build race conditions in high core count machines (Jiri Olsa)
    
     - Fix handling a zero sample->tid in 'perf sched timehist', as
       sometimes that isn't the idle thread (Namhyung Kim)
    
    Infrastructure changes:
    
     - Check minimal accepted LLVM version in its feature check, 3.9 at this
       time (Wang Nan)
    
    Documentation changes:
    
     - Explicitly document that --children is enabled by default (Yannick Brosseau)
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Ingo Molnar
    Ingo Molnar committed Dec 7, 2016
  2. perf tools: Explicitly document that --children is enabled by default

    The fact that the --children option is enabled by default is buried deep
    at the end of the help page, in the overhead calculation section. This
    make it explicit right where the option is listed, following the same
    way other default options are described
    
    Signed-off-by: Yannick Brosseau <scientist@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel-team@fb.com
    Link: http://lkml.kernel.org/r/20161202160732.29058-1-scientist@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    greenscientist authored and Arnaldo Carvalho de Melo committed Dec 7, 2016
  3. perf sched timehist: Cleanup idle_max_cpu handling

    It treats the idle_max_cpu little bit confusingly IMHO.  Let's make it
    more straight forward.
    
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: David Ahern <dsahern@gmail.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20161206034010.6499-6-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    namhyung authored and Arnaldo Carvalho de Melo committed Dec 7, 2016
  4. perf sched timehist: Handle zero sample->tid properly

    Sometimes samples have tid of 0 but non-0 pid.  It ends up having a new
    thread of 0 tid/pid (instead of referring idle task) since tid is used
    to search matching task.  But I guess it's wrong to use 0 as a tid when
    pid is set.  This patch uses tid only if it has a non-zero value or same
    as pid (of 0).
    
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20161206034010.6499-4-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    namhyung authored and Arnaldo Carvalho de Melo committed Dec 7, 2016
  5. perf callchain: Introduce callchain_cursor__copy()

    The callchain_cursor__copy() function is to save current callchain
    captured by a cursor.  It'll be used to keep callchains when switching
    to idle task for each cpu.
    
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20161206034010.6499-3-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    namhyung authored and Arnaldo Carvalho de Melo committed Dec 7, 2016
  6. perf sched: Cleanup option processing

    The -D/--dump-raw-trace option is in the parent option so no need to
    repeat it.  Also move -f/--force option to parent as it's common to
    handle data file.
    
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: David Ahern <dsahern@gmail.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20161206034010.6499-2-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    namhyung authored and Arnaldo Carvalho de Melo committed Dec 7, 2016
  7. perf sched timehist: Improve error message when analyzing wrong file

    Arnaldo reported an unhelpful error message when running perf sched
    timehist on a file that did not contain sched tracepoints:
    
        [root@jouet ~]# perf sched timehist
        No trace sample to read. Did you call 'perf record -R'?
    
        [root@jouet ~]# perf evlist -v
        cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|CALLCHAIN|CPU|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
    
    Change the has_traces check to look for the sched_switch event. Analysis
    for perf sched timehist requires at least this event.
    
    Now when analyzing a file without sched tracepoints you get:
    
        root@f21-vbox:/tmp$ perf sched timehist
        No sched_switch events found. Have you run 'perf sched record'?
    
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Reported-and-Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1480451988-43673-1-git-send-email-dsahern@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    dsahern authored and Arnaldo Carvalho de Melo committed Dec 7, 2016

Commits on Dec 6, 2016

  1. perf tools: Move perf build related variables under non fixdep leg

    Because there's no need for them in fixdep build.
    
    Signed-off-by: Jiri 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/1481030331-31944-4-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 6, 2016
  2. perf tools: Force fixdep compilation at the start of the build

    The fixdep tool needs to be built before everything else, because it fixes
    every object dependency file.
    
    We handle this currently by making all objects to depend on fixdep, which is
    error prone and is easily forgotten when new object is added.
    
    Instead of this, this patch force fixdep tool to be built as the first target
    in the separate make session. This way we don't need to handle extra fixdep
    dependencies and we are certain there's no fixdep race with any parallel make
    job.
    
    Committer notes:
    
    Testing it:
    
    Before:
    
      $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make -k O=/tmp/build/perf -C tools/perf install-bin
      make: Entering directory '/home/acme/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                      libaudit: [ on  ]
      ...                        libbfd: [ on  ]
      ...                        libelf: [ on  ]
      ...                       libnuma: [ on  ]
      ...        numa_num_possible_cpus: [ on  ]
      ...                       libperl: [ on  ]
      ...                     libpython: [ on  ]
      ...                      libslang: [ on  ]
      ...                     libcrypto: [ on  ]
      ...                     libunwind: [ on  ]
      ...            libdw-dwarf-unwind: [ on  ]
      ...                          zlib: [ on  ]
      ...                          lzma: [ on  ]
      ...                     get_cpuid: [ on  ]
      ...                           bpf: [ on  ]
    
        GEN      /tmp/build/perf/common-cmds.h
        HOSTCC   /tmp/build/perf/fixdep.o
        HOSTLD   /tmp/build/perf/fixdep-in.o
        LINK     /tmp/build/perf/fixdep
        MKDIR    /tmp/build/perf/pmu-events/
        HOSTCC   /tmp/build/perf/pmu-events/json.o
        MKDIR    /tmp/build/perf/pmu-events/
        HOSTCC   /tmp/build/perf/pmu-events/jsmn.o
        HOSTCC   /tmp/build/perf/pmu-events/jevents.o
        HOSTLD   /tmp/build/perf/pmu-events/jevents-in.o
        PERF_VERSION = 4.9.rc8.g868cd5
        CC       /tmp/build/perf/perf-read-vdso32
      <SNIP>
    
    After:
    
      $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make -k O=/tmp/build/perf -C tools/perf install-bin
      make: Entering directory '/home/acme/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
        HOSTCC   /tmp/build/perf/fixdep.o
        HOSTLD   /tmp/build/perf/fixdep-in.o
        LINK     /tmp/build/perf/fixdep
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                      libaudit: [ on  ]
      ...                        libbfd: [ on  ]
      ...                        libelf: [ on  ]
      ...                       libnuma: [ on  ]
      ...        numa_num_possible_cpus: [ on  ]
      ...                       libperl: [ on  ]
      ...                     libpython: [ on  ]
      ...                      libslang: [ on  ]
      ...                     libcrypto: [ on  ]
      ...                     libunwind: [ on  ]
      ...            libdw-dwarf-unwind: [ on  ]
      ...                          zlib: [ on  ]
      ...                          lzma: [ on  ]
      ...                     get_cpuid: [ on  ]
      ...                           bpf: [ on  ]
    
        GEN      /tmp/build/perf/common-cmds.h
        MKDIR    /tmp/build/perf/fd/
        CC       /tmp/build/perf/fd/array.o
        LD       /tmp/build/perf/fd/libapi-in.o
        MKDIR    /tmp/build/perf/fs/
        CC       /tmp/build/perf/event-parse.o
        CC       /tmp/build/perf/fs/fs.o
        PERF_VERSION = 4.9.rc8.g57a92f
        CC       /tmp/build/perf/event-plugin.o
        MKDIR    /tmp/build/perf/fs/
        CC       /tmp/build/perf/fs/tracing_path.o
      <SNIP>
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    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/1481030331-31944-3-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 6, 2016
  3. perf tools: Move PERF-VERSION-FILE target into rules area

    An upcoming fixdep fix needs all targets at the same area, so they'll
    fit under a signal condition block.
    
    Moving PERF-VERSION-FILE target into rules section.
    
    Signed-off-by: Jiri 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/1481030331-31944-2-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 6, 2016
  4. perf build: Check LLVM version in feature check

    Cancel builtin llvm and clang support when LLVM version is less than
    3.9.0: following commits uses newer API.
    
    Since Clang/LLVM's API is not guaranteed to be stable, add a
    test-llvm-version.cpp feature checker, issue warning if LLVM found in
    compiling environment is not tested yet.
    
    Committer Notes:
    
    Testing it:
    
    Environment:
    
      $ cat /etc/fedora-release
      Fedora release 25 (Twenty Five)
      $ rpm -q llvm-devel clang-devel
      llvm-devel-3.8.0-1.fc25.x86_64
      clang-devel-3.8.0-2.fc25.x86_64
      $
    
    Before:
    
      $  make -k LIBCLANGLLVM=1 O=/tmp/build/perf -C tools/perf install-bin
      make: Entering directory '/home/acme/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
      Warning: tools/include/uapi/linux/bpf.h differs from kernel
      Warning: tools/arch/arm/include/uapi/asm/kvm.h differs from kernel
        INSTALL  GTK UI
        LINK     /tmp/build/perf/perf
      /tmp/build/perf/libperf.a(libperf-in.o): In function `perf::createCompilerInvocation(llvm::SmallVector<char const*, 16u>, llvm::StringRef&, clang::DiagnosticsEngine&)':
      /home/acme/git/linux/tools/perf/util/c++/clang.cpp:56: undefined reference to `clang::tooling::newInvocation(clang::DiagnosticsEngine*, llvm::SmallVector<char const*, 16u> const&)'
      /tmp/build/perf/libperf.a(libperf-in.o): In function `perf::getModuleFromSource(llvm::SmallVector<char const*, 16u>, llvm::StringRef, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>)':
      /home/acme/git/linux/tools/perf/util/c++/clang.cpp:68: undefined reference to `clang::CompilerInstance::CompilerInstance(std::shared_ptr<clang::PCHContainerOperations>, bool)'
      /home/acme/git/linux/tools/perf/util/c++/clang.cpp:69: undefined reference to `clang::CompilerInstance::createDiagnostics(clang::DiagnosticConsumer*, bool)'
      <SNIP>
    
    After:
    
      Makefile.config:807: No suitable libLLVM found, disabling builtin clang and llvm support. Please install llvm-dev(el) (>= 3.9.0)
    
    Updating the environment to a locally built LLVM 4.0 + clang 3.9 (forgot
    to git pull, duh) combo, all works as expected, it is properly detected
    and built into the resulting perf binary.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Reported-and-Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161206072230.7651-1-wangnan0@huawei.com
    [ Change the warning message a bit (add 'suitable' and 'builtin'), clarifying it, see committer notes above ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 6, 2016
  5. Merge tag 'perf-core-for-mingo-20161205' of git://git.kernel.org/pub/…

    …scm/linux/kernel/git/acme/linux into perf/core
    
    Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
    
    Fixes:
    
     - Do not show a bogus target address in 'perf annotate' for targetless powerpc
       jump instructions such as 'bctr' (Ravi Bangoria)
    
     - Fix tools/build race conditions with the fixdep utility (Jiri Olsa)
    
     - Fix building objtool with clang (Peter Foley)
    
    Infrastructure changes:
    
    - Support linking perf with clang and LLVM libraries, initially statically, but
      this limitation will be lifted and shared libraries, when available, will
      be preferred to the static build, that should, as with other features, be
      enabled explicitly (Wang Nan)
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Ingo Molnar
    Ingo Molnar committed Dec 6, 2016
  6. Merge branch 'linus' into perf/core, to pick up fixes

    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Ingo Molnar
    Ingo Molnar committed Dec 6, 2016

Commits on Dec 5, 2016

  1. perf annotate: Show raw form for jump instruction with indirect target

    For jump instructions that does not include target address as direct operand,
    show the original disassembled line for them. This is needed for certain
    powerpc jump instructions that use target address in a register (such as bctr,
    btar, ...).
    
    Before:
         ld     r12,32088(r12)
         mtctr  r12
      v  bctr   ffffffffffffca2c
         std    r2,24(r1)
         addis  r12,r2,-1
    
    After:
         ld     r12,32088(r12)
         mtctr  r12
      v  bctr
         std    r2,24(r1)
         addis  r12,r2,-1
    
    Committer notes:
    
    Testing it using a perf.data file and vmlinux for powerpc64,
    cross-annotating it on a x86_64 workstation:
    
    Before:
    
      .__bpf_prog_run  vmlinux.powerpc
             │        std    r10,512(r9)                      ▒
             │        lbz    r9,0(r31)                        ▒
             │        rldicr r9,r9,3,60                       ▒
             │        ldx    r9,r30,r9                        ▒
             │        mtctr  r9                               ▒
      100.00 │      ↓ bctr   3fffffffffe01510                 ▒
             │        lwa    r10,4(r31)                       ▒
             │        lwz    r9,0(r31)                        ▒
      <SNIP>
      Invalid jump offset: 3fffffffffe01510
    
    After:
    
      .__bpf_prog_run  vmlinux.powerpc
             │        std    r10,512(r9)                      ▒
             │        lbz    r9,0(r31)                        ▒
             │        rldicr r9,r9,3,60                       ▒
             │        ldx    r9,r30,r9                        ▒
             │        mtctr  r9                               ▒
      100.00 │      ↓ bctr                                    ▒
             │        lwa    r10,4(r31)                       ▒
             │        lwz    r9,0(r31)                        ▒
      <SNIP>
      Invalid jump offset: 3fffffffffe01510
    
    This, in turn, uncovers another problem with jumps without operands, the
    ENTER/-> operation, to jump to the target, still continues using the bogus
    target :-)
    
    BTW, this was the file used for the above tests:
    
      [acme@jouet ravi_bangoria]$ perf report --header-only -i perf.data.f22vm.powerdev
      # ========
      # captured on: Thu Nov 24 12:40:38 2016
      # hostname : pdev-f22-qemu
      # os release : 4.4.10-200.fc22.ppc64
      # perf version : 4.9.rc1.g6298ce
      # arch : ppc64
      # nrcpus online : 48
      # nrcpus avail : 48
      # cpudesc : POWER7 (architected), altivec supported
      # cpuid : 74,513
      # total memory : 4158976 kB
      # cmdline : /home/ravi/Workspace/linux/tools/perf/perf record -a
      # event : name = cycles:ppp, , size = 112, { sample_period, sample_freq } = 4000, sample_type = IP|TID|TIME|CPU|PERIOD, disabled = 1, inherit = 1, mmap = 1, c
      # HEADER_CPU_TOPOLOGY info available, use -I to display
      # HEADER_NUMA_TOPOLOGY info available, use -I to display
      # pmu mappings: cpu = 4, software = 1, tracepoint = 2, breakpoint = 5
      # missing features: HEADER_TRACING_DATA HEADER_BRANCH_STACK HEADER_GROUP_DESC HEADER_AUXTRACE HEADER_STAT HEADER_CACHE
      # ========
      #
      [acme@jouet ravi_bangoria]$
    
    Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Chris Riyder <chris.ryder@arm.com>
    Cc: Kim Phillips <kim.phillips@arm.com>
    Cc: Markus Trippelsdorf <markus@trippelsdorf.de>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Taeung Song <treeze.taeung@gmail.com>
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lkml.kernel.org/r/1480953407-7605-1-git-send-email-ravi.bangoria@linux.vnet.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Ravi Bangoria Arnaldo Carvalho de Melo
    Ravi Bangoria authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  2. perf tools: Add non config targets

    Adding some missing non config targets that were for some reason
    omitted.
    
    Signed-off-by: Jiri 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/1480884178-8072-7-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  3. perf tools: Cleanup build directory before each test

    Cleanup the fixdep tool before every test.
    
    Signed-off-by: Jiri 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/1480884178-8072-8-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  4. perf tools: Move python/perf.so target into rules area

    Following fixdep fix needs all targets at the same area, so they'll fit
    under signal condition block.
    
    Moving python/perf.so target into rules section and intentionally
    removing the perl script related comment.
    
    Signed-off-by: Jiri 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/1480884178-8072-5-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  5. perf tools: Move install-gtk target into rules area

    The upcoming fixdep fix needs all targets at the same area, so they'll
    fit under a signal condition block.
    
    Move install-gtk target into the rules section.
    
    Signed-off-by: Jiri 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/1480884178-8072-4-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  6. tools build: Move tabs to spaces where suitable

    We've been hit several times by a Makefile bug where line indented by
    tab was falsely considered as target command.
    
    We prevent this by always using space indentation for everything except
    for the target commands.
    
    Signed-off-by: Jiri 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/1480884178-8072-3-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  7. tools build: Make the .cmd file more readable

    Putting extra line between dependencies and cmd_* definition
    to make it more readable.
    
    Before:
    
      $ cat .builtin-top.o.cmd
      ...
      /home/jolsa/kernel/linux-perf/tools/include/linux/stringify.h \
      /home/jolsa/kernel/linux-perf/tools/include/linux/time64.h
      cmd_builtin-top.o := gcc -Wp,-MD,./.builtin-top.o.d -Wp,-MT,builtin-...
      ...
    
    After:
    
      $ cat .builtin-top.o.cmd
      ...
      /home/jolsa/kernel/linux-perf/tools/include/linux/stringify.h \
      /home/jolsa/kernel/linux-perf/tools/include/linux/time64.h
    
      cmd_builtin-top.o := gcc -Wp,-MD,./.builtin-top.o.d -Wp,-MT,builtin-...
      ...
    
    Signed-off-by: Jiri 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/1480884178-8072-2-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    olsajiri authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  8. perf clang: Compile BPF script using builtin clang support

    After this patch, perf utilizes builtin clang support to build BPF
    script, no longer depend on external clang, but fallbacking to it
    if for some reason the builtin compiling framework fails.
    
    Test:
    
      $ type clang
      -bash: type: clang: not found
      $ cat ~/.perfconfig
      $ echo '#define LINUX_VERSION_CODE 0x040700' > ./test.c
      $ cat ./tools/perf/tests/bpf-script-example.c >> ./test.c
      $ ./perf record -v --dry-run -e ./test.c 2>&1 | grep builtin
      bpf: successfull builtin compilation
      $
    
    Can't pass cflags so unable to include kernel headers now. Will be fixed
    by following commits.
    
    Committer notes:
    
    Make sure '-v' comes before the '-e ./test.c' in the command line otherwise the
    'verbose' variable will not be set when the bpf event is parsed and thus the
    pr_debug indicating a 'successfull builtin compilation' will not be output, as
    the debug level (1) will be less than what 'verbose' has at that point (0).
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-16-wangnan0@huawei.com
    [ Spell check/reflow successfull pr_debug string ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  9. perf clang: Support compile IR to BPF object and add testcase

    getBPFObjectFromModule() is introduced to compile LLVM IR(Module)
    to BPF object. Add new testcase for it.
    
    Test result:
      $ ./buildperf/perf test -v clang
      51: builtin clang support                               :
      51.1: builtin clang compile C source to IR              :
      --- start ---
      test child forked, pid 21822
      test child finished with 0
      ---- end ----
      builtin clang support subtest 0: Ok
      51.2: builtin clang compile C source to ELF object      :
      --- start ---
      test child forked, pid 21823
      test child finished with 0
      ---- end ----
      builtin clang support subtest 1: Ok
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-15-wangnan0@huawei.com
    [ Remove redundant "Test" from entry descriptions ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  10. perf clang: Update test case to use real BPF script

    Allow C++ code to use util.h and tests/llvm.h. Let 'perf test' compile a
    real BPF script.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-14-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  11. perf clang: Allow passing CFLAGS to builtin clang

    Improve getModuleFromSource() API to accept a cflags list. This feature
    will be used to pass LINUX_VERSION_CODE and -I flags.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-13-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  12. perf clang: Use real file system for #include

    Utilize clang's OverlayFileSystem facility, allow CompilerInstance to
    access real file system.
    
    With this patch the '#include' directive can be used.
    
    Add a new getModuleFromSource for real file.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-12-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  13. perf clang: Add builtin clang support ant test case

    Add basic clang support in clang.cpp and test__clang() testcase. The
    first testcase checks if builtin clang is able to generate LLVM IR.
    
    tests/clang.c is a proxy. Real testcase resides in
    utils/c++/clang-test.cpp in c++ and exports C interface to perf test
    subsystem.
    
    Test result:
    
       $ perf test -v clang
       51: builtin clang support                               :
       51.1: Test builtin clang compile C source to IR              :
       --- start ---
       test child forked, pid 13215
       test child finished with 0
       ---- end ----
       Test builtin clang support subtest 0: Ok
    
    Committer note:
    
    Make sure you've enabled CLANG and LLVM builtin support by setting
    the LIBCLANGLLVM variable on the make command line, e.g.:
    
      make LIBCLANGLLVM=1 O=/tmp/build/perf -C tools/perf install-bin
    
    Otherwise you'll get this when trying to do the 'perf test' call above:
    
      # perf test clang
      51: builtin clang support                      : Skip (not compiled in)
      #
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-11-wangnan0@huawei.com
    [ Removed "Test" from descriptions, redundant and already removed from all the other entries ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  14. perf build: Add clang and llvm compile and linking support

    Add necessary c++ flags and link libraries to support builtin clang and
    LLVM. Add all llvm and clang libraries, so don't need to worry about
    clang changes its libraries setting. However, linking perf would take
    much longer than usual.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-10-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  15. tools build: Add feature detection for clang

    Check if basic clang compiling environment is ready.
    
    Doesn't like 'llvm-config --libs' which can returns llvm libraries in right
    order and duplicates some libraries if necessary, there's no correspondence for
    clang libraries (-lclangxxx). to avoid extra complexity and to avoid new clang
    breaking libraries ordering, use --start-group and --end-group.
    
    In this test case, manually identify required clang libs and hope it to be
    stable. Putting all clang libraries here is possible (use make's wildcard), but
    then feature checking becomes very slow.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-9-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
  16. tools build: Add feature detection for LLVM

    Check if basic LLVM compiling environment is ready.
    
    Use llvm-config to detect include and library directories. Avoid using
    'llvm-config --cxxflags' because its result contain some unwanted flags
    like --sysroot (if LLVM is built by yocto).
    
    Use '?=' to set LLVM_CONFIG, so explicitly passing LLVM_CONFIG to make
    would override it.
    
    Use 'llvm-config --libs BPF' to check if BPF backend is compiled in.
    Since now BPF bytecode is the only required backend, no need to waste
    time linking llvm and clang if BPF backend is missing. This also
    introduce an implicit requirement that LLVM should be new enough.  Old
    LLVM doesn't support BPF backend.
    
    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Joe Stringer <joe@ovn.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/20161126070354.141764-8-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    WangNan0 authored and Arnaldo Carvalho de Melo committed Dec 5, 2016
Older
You can’t perform that action at this time.