1. 03 11月, 2015 1 次提交
  2. 23 10月, 2015 1 次提交
  3. 21 10月, 2015 1 次提交
  4. 06 10月, 2015 1 次提交
  5. 01 10月, 2015 2 次提交
  6. 29 9月, 2015 3 次提交
  7. 22 9月, 2015 3 次提交
    • K
      tools lib traceevent: Fix string handling in heterogeneous arch environments · c2e4b24f
      Kapileshwar Singh 提交于
      When a trace recorded on a 32-bit device is processed with a 64-bit
      binary, the higher 32-bits of the address need to ignored.
      
      The lack of this results in the output of the 64-bit pointer
      value to the trace as the 32-bit address lookup fails in find_printk().
      
      Before:
      
        burn-1778  [003]   548.600305: bputs:   0xc0046db2s: 2cec5c058d98c
      
      After:
      
        burn-1778  [003]   548.600305: bputs:   0xc0046db2s: RT throttling activated
      
      The problem occurs in PRINT_FIELD when the field is recognized as a
      pointer to a string (of the type const char *)
      
      Heterogeneous architectures cases below can arise and should be handled:
      
      * Traces recorded using 32-bit addresses processed on a 64-bit machine
      * Traces recorded using 64-bit addresses processed on a 32-bit machine
      Reported-by: NJuri Lelli <juri.lelli@arm.com>
      Signed-off-by: NKapileshwar Singh <kapileshwar.singh@arm.com>
      Reviewed-by: NSteven Rostedt <rostedt@goodmis.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Javi Merino <javi.merino@arm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: stable@vger.kernel.org
      Link: http://lkml.kernel.org/r/1442928123-13824-1-git-send-email-kapileshwar.singh@arm.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      c2e4b24f
    • A
      tools lib bpf: Use FEATURE_USER to allow building in the same dir as perf · 65f041be
      Arnaldo Carvalho de Melo 提交于
      When building tools/lib/bpf as part of the tools/perf/ build process,
      which will happend when we introduce a patch wiring that up, we end up
      stomping on the feature detection caching mechanism, that uses a file in
      the output directory (O=) that is shared by libbpf and perf to check if
      something changed from one build to another that requires redoing the
      feature detection process.
      
      By using the recently introduced FEATURE_USER tools/build/ knob, we can
      avoid that:
      
      Before, every make invokation would run the feature detection:
      
        $ make O=/tmp/build/perf -C tools/perf
        make: Entering directory '/home/git/linux/tools/perf'
        Auto-detecting system features:
        ...                         dwarf: [ on  ]
        ...                         glibc: [ on  ]
        <SNIP>
        ...                     get_cpuid: [ on  ]
        ...                           bpf: [ on  ]
      
          GEN      perf-archive
          GEN      perf-with-kcore
      
        Auto-detecting system features:
        ...                        libelf: [ on  ]
        ...                           bpf: [ on  ]
        <SNIP>
      
      After:
      
        $ make O=/tmp/build/perf -C tools/perf
        make: Entering directory '/home/git/linux/tools/perf'
          BUILD:   Doing 'make -j4' parallel build
        make: Leaving directory '/home/git/linux/tools/perf'
        $
      
      Because we now have two different feature detection state files:
      
        $ ls -la /tmp/build/perf/FEATURE-DUMP*
        -rw-rw-r--. 1 acme acme 338 Sep 21 17:25 /tmp/build/perf/FEATURE-DUMP
        -rw-rw-r--. 1 acme acme  33 Sep 21 17:25 /tmp/build/perf/FEATURE-DUMP.libbpf
        $
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexei Starovoitov <ast@plumgrid.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: pi3orama@163.com
      Fixes: 1b76c13e ("bpf tools: Introduce 'bpf' library and add bpf feature check")
      Link: http://lkml.kernel.org/n/tip-s6ev9wfqy7pvvs58emys2g90@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      65f041be
    • A
      tools lib bpf: Fix up FEATURE_{TESTS,DISPLAY} usage · 20517cd9
      Arnaldo Carvalho de Melo 提交于
      When libbpf was introduced it wrongly asked for the "libelf" and "bpf"
      feature tests to be performed (via FEATURE_TESTS), while asking that
      "libbpf", "libelf-mmap", "libelf-getphdrnum" and "bpf" to have the
      result of its respective tests to be displayed (via FEATURE_DISPLAY).
      
      Due to another recently bug fixed in the tools/build/ infrastructure
      ("tools build: Fixup feature detection display function name") the
      results for the entries in the FEATURE_DISPLAY, for this case, were
      appearing as all succeeding, when two of them (the ones only on the
      DISPLAY) were not even being performed.
      
      Before:
      
        $ make -C tools/lib/bpf/
        make: Entering directory '/home/git/linux/tools/lib/bpf'
        Auto-detecting system features:
        ...                        libelf: [ on  ]
        ...             libelf-getphdrnum: [ OFF ]
        ...                   libelf-mmap: [ OFF ]
        ...                           bpf: [ on  ]
        <SNIP>
      
      After, with FEATURE_TESTS == FEATURE_DISPLAY:
      
        Auto-detecting system features:
        ...                        libelf: [ on  ]
        ...             libelf-getphdrnum: [ on  ]
        ...                   libelf-mmap: [ on  ]
        ...                           bpf: [ on  ]
        <SNIP>
      
      I just inverted, so that it tests the four features but displays just
      the libelf and mmap ones, to make it more compact. So it becomes:
      
        $ make -C tools/lib/bpf/
        make: Entering directory '/home/git/linux/tools/lib/bpf'
      
        Auto-detecting system features:
        ...                        libelf: [ on  ]
        ...                           bpf: [ on  ]
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexei Starovoitov <ast@plumgrid.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: pi3orama@163.com
      Fixes: 1b76c13e ("bpf tools: Introduce 'bpf' library and add bpf feature check")
      Link: http://lkml.kernel.org/n/tip-y4bd59e6j9rzzojiyeqrg2jq@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      20517cd9
  8. 14 9月, 2015 5 次提交
  9. 04 9月, 2015 8 次提交
  10. 03 9月, 2015 1 次提交
  11. 01 9月, 2015 1 次提交
    • W
      bpf tools: New API to get name from a BPF object · acf860ae
      Wang Nan 提交于
      Before this patch there's no way to connect a loaded bpf object
      to its source file. However, during applying perf's '--filter' to BPF
      object, without this connection makes things harder, because perf loads
      all programs together, but '--filter' setting is for each object.
      
      The API of bpf_object__open_buffer() is changed to allow passing a name.
      Fortunately, at this time there's only one user of it (perf test LLVM),
      so we change it together.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Cc: Alexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1440742821-44548-2-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      acf860ae
  12. 28 8月, 2015 1 次提交
  13. 25 8月, 2015 2 次提交
  14. 21 8月, 2015 1 次提交
  15. 07 8月, 2015 9 次提交
    • W
      bpf tools: Link all bpf objects onto a list · 9a208eff
      Wang Nan 提交于
      To allow enumeration of all bpf_objects, keep them in a list (hidden to
      caller). bpf_object__for_each_safe() is introduced to do this iteration.
      It is safe even user close the object during iteration.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-23-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      9a208eff
    • W
      bpf tools: Introduce accessors for struct bpf_program · aa9b1ac3
      Wang Nan 提交于
      This patch introduces accessors for user of libbpf to retrieve section
      name and fd of a opened/loaded eBPF program. 'struct bpf_prog_handler'
      is used for that purpose. Accessors of programs section name and file
      descriptor are provided. Set/get private data are also impelmented.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Link: http://lkml.kernel.org/r/1435716878-189507-21-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      aa9b1ac3
    • W
      bpf tools: Load eBPF programs in object files into kernel · 55cffde2
      Wang Nan 提交于
      This patch utilizes previous introduced bpf_load_program to load
      programs in the ELF file into kernel. Result is stored in 'fd' field in
      'struct bpf_program'.
      
      During loading, it allocs a log buffer and free it before return.  Note
      that that buffer is not passed to bpf_load_program() if the first
      loading try is successful. Doesn't use a statically allocated log buffer
      to avoid potention multi-thread problem.
      
      Instructions collected during opening is cleared after loading.
      
      load_program() is created for loading a 'struct bpf_insn' array into
      kernel, bpf_program__load() calls it. By this design we have a function
      loads instructions into kernel. It will be used by further patches,
      which creates different instances from a program and load them into
      kernel.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-20-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      55cffde2
    • W
      bpf tools: Introduce bpf_load_program() to bpf.c · 7bf98369
      Wang Nan 提交于
      bpf_load_program() can be used to load bpf program into kernel. To make
      loading faster, first try to load without logbuf. Try again with logbuf
      if the first try failed.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-19-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7bf98369
    • W
      bpf tools: Relocate eBPF programs · 8a47a6c5
      Wang Nan 提交于
      If an eBPF program accesses a map, LLVM generates a load instruction
      which loads an absolute address into a register, like this:
      
        ld_64   r1, <MCOperand Expr:(mymap)>
        ...
        call    2
      
      That ld_64 instruction will be recorded in relocation section.
      To enable the usage of that map, relocation must be done by replacing
      the immediate value by real map file descriptor so it can be found by
      eBPF map functions.
      
      This patch to the relocation work based on information collected by
      patches:
      
      'bpf tools: Collect symbol table from SHT_SYMTAB section',
      'bpf tools: Collect relocation sections from SHT_REL sections'
      and
      'bpf tools: Record map accessing instructions for each program'.
      
      For each instruction which needs relocation, it inject corresponding
      file descriptor to imm field. As a part of protocol, src_reg is set to
      BPF_PSEUDO_MAP_FD to notify kernel this is a map loading instruction.
      
      This is the final part of map relocation patch. The principle of map
      relocation is described in commit message of 'bpf tools: Collect symbol
      table from SHT_SYMTAB section'.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-18-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8a47a6c5
    • W
      bpf tools: Create eBPF maps defined in an object file · 52d3352e
      Wang Nan 提交于
      This patch creates maps based on 'map' section in object file using
      bpf_create_map(), and stores the fds into an array in 'struct
      bpf_object'.
      
      Previous patches parse ELF object file and collects required data, but
      doesn't play with the kernel. They belong to the 'opening' phase. This
      patch is the first patch in 'loading' phase. The 'loaded' field is
      introduced in 'struct bpf_object' to avoid loading an object twice,
      because the loading phase clears resources collected during the opening
      which becomes useless after loading. In this patch, maps_buf is cleared.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-17-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      52d3352e
    • W
      bpf tools: Add bpf.c/h for common bpf operations · e3ed2fef
      Wang Nan 提交于
      This patch introduces bpf.c and bpf.h, which hold common functions
      issuing bpf syscall. The goal of these two files is to hide syscall
      completely from user. Note that bpf.c and bpf.h deal with kernel
      interface only. Things like structure of 'map' section in the ELF object
      is not cared by of bpf.[ch].
      
      We first introduce bpf_create_map().
      
      Note that, since functions in bpf.[ch] are wrapper of sys_bpf, they
      don't use OO style naming.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-16-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e3ed2fef
    • W
      bpf tools: Record map accessing instructions for each program · 34090915
      Wang Nan 提交于
      This patch records the indices of instructions which are needed to be
      relocated. That information is saved in the 'reloc_desc' field in
      'struct bpf_program'. In the loading phase (this patch takes effect in
      the opening phase), the collected instructions will be replaced by map
      loading instructions.
      
      Since we are going to close the ELF file and clear all data at the end
      of the 'opening' phase, the ELF information will no longer be valid in
      the 'loading' phase. We have to locate the instructions before maps are
      loaded, instead of directly modifying the instruction.
      
      'struct bpf_map_def' is introduced in this patch to let us know how many
      maps are defined in the object.
      
      This is the third part of map relocation. The principle of map relocation
      is described in commit message of 'bpf tools: Collect symbol table from
      SHT_SYMTAB section'.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-15-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      34090915
    • W
      bpf tools: Collect relocation sections from SHT_REL sections · b62f06e8
      Wang Nan 提交于
      This patch collects relocation sections into 'struct object'.  Such
      sections are used for connecting maps to bpf programs. 'reloc' field in
      'struct bpf_object' is introduced for storing such information.
      
      This patch simply store the data into 'reloc' field. Following patch
      will parse them to know the exact instructions which are needed to be
      relocated.
      
      Note that the collected data will be invalid after ELF object file is
      closed.
      
      This is the second patch related to map relocation. The first one is
      'bpf tools: Collect symbol table from SHT_SYMTAB section'. The
      principle of map relocation is described in its commit message.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kaixu Xia <xiakaixu@huawei.com>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1435716878-189507-14-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b62f06e8