26 Apr, 2018

2 commits

  • [ Upstream commit d777f8de99b05d399c0e4e51cdce016f26bd971b ]

    If a field is a dynamic string, get_field_str() returned just the
    offset/size value and not the string. Have it parse the offset/size
    correctly to return the actual string. Otherwise filtering fails when
    trying to filter fields that are dynamic strings.

    Reported-by: Gopanapalli Pradeep
    Signed-off-by: Steven Rostedt
    Acked-by: Namhyung Kim
    Cc: Andrew Morton
    Link: http://lkml.kernel.org/r/20180112004823.146333275@goodmis.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Steven Rostedt (VMware)
     
  • [ Upstream commit 38d70b7ca1769f26c0b79f3c08ff2cc949712b59 ]

    When processing %pX in pretty_print(), simplify the logic slightly by
    incrementing the ptr to the format string if isalnum(ptr[1]) is true.
    This follows the logic a bit more closely to what is in the kernel.

    Also, this fixes a small bug where %pF was not giving the offset of the
    function.

    Signed-off-by: Steven Rostedt
    Acked-by: Namhyung Kim
    Cc: Andrew Morton
    Link: http://lkml.kernel.org/r/20180112004822.260262257@goodmis.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Steven Rostedt (VMware)
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

10 Mar, 2017

1 commit

  • Fix typos and add the following to the scripts/spelling.txt:

    overide||override

    While we are here, fix the doubled "address" in the touched line
    Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt.

    Also, fix the comment block style in the touched hunks in
    drivers/media/dvb-frontends/drx39xyj/drx_driver.h.

    Link: http://lkml.kernel.org/r/1481573103-11329-21-git-send-email-yamada.masahiro@socionext.com
    Signed-off-by: Masahiro Yamada
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Masahiro Yamada
     

01 Mar, 2017

1 commit

  • Pull perf fixes from Ingo Molnar:
    "Misc fixes on the kernel and tooling side - nothing in particular
    stands out"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)
    perf/core: Fix the perf_cpu_time_max_percent check
    perf/core: Fix perf_event_enable_on_exec() timekeeping (again)
    perf/core: Remove confusing comment and move put_ctx()
    perf record: Honor --quiet option properly
    perf annotate: Add -q/--quiet option
    perf diff: Add -q/--quiet option
    perf report: Add -q/--quiet option
    perf utils: Check verbose flag properly
    perf utils: Add perf_quiet_option()
    perf record: Add -a as default target
    perf stat: Add -a as default target
    perf tools: Fail on using multiple bits long terms without value
    perf tools: Move new_term arguments into struct parse_events_term template
    perf build: Add special fixdep cleaning rule
    perf tools: Replace _SC_NPROCESSORS_CONF with max_present_cpu in cpu_topology_map
    perf header: Make build_cpu_topology skip offline/absent CPUs
    perf cpumap: Add cpu__max_present_cpu()
    perf session: Fix DEBUG=1 build with clang
    tools lib traceevent: It's preempt not prempt
    perf python: Filter out -specs=/a/b/c from the python binding cc options
    ...

    Linus Torvalds
     

23 Feb, 2017

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    1) Support TX_RING in AF_PACKET TPACKET_V3 mode, from Sowmini
    Varadhan.

    2) Simplify classifier state on sk_buff in order to shrink it a bit.
    From Willem de Bruijn.

    3) Introduce SIPHASH and it's usage for secure sequence numbers and
    syncookies. From Jason A. Donenfeld.

    4) Reduce CPU usage for ICMP replies we are going to limit or
    suppress, from Jesper Dangaard Brouer.

    5) Introduce Shared Memory Communications socket layer, from Ursula
    Braun.

    6) Add RACK loss detection and allow it to actually trigger fast
    recovery instead of just assisting after other algorithms have
    triggered it. From Yuchung Cheng.

    7) Add xmit_more and BQL support to mvneta driver, from Simon Guinot.

    8) skb_cow_data avoidance in esp4 and esp6, from Steffen Klassert.

    9) Export MPLS packet stats via netlink, from Robert Shearman.

    10) Significantly improve inet port bind conflict handling, especially
    when an application is restarted and changes it's setting of
    reuseport. From Josef Bacik.

    11) Implement TX batching in vhost_net, from Jason Wang.

    12) Extend the dummy device so that VF (virtual function) features,
    such as configuration, can be more easily tested. From Phil
    Sutter.

    13) Avoid two atomic ops per page on x86 in bnx2x driver, from Eric
    Dumazet.

    14) Add new bpf MAP, implementing a longest prefix match trie. From
    Daniel Mack.

    15) Packet sample offloading support in mlxsw driver, from Yotam Gigi.

    16) Add new aquantia driver, from David VomLehn.

    17) Add bpf tracepoints, from Daniel Borkmann.

    18) Add support for port mirroring to b53 and bcm_sf2 drivers, from
    Florian Fainelli.

    19) Remove custom busy polling in many drivers, it is done in the core
    networking since 4.5 times. From Eric Dumazet.

    20) Support XDP adjust_head in virtio_net, from John Fastabend.

    21) Fix several major holes in neighbour entry confirmation, from
    Julian Anastasov.

    22) Add XDP support to bnxt_en driver, from Michael Chan.

    23) VXLAN offloads for enic driver, from Govindarajulu Varadarajan.

    24) Add IPVTAP driver (IP-VLAN based tap driver) from Sainath Grandhi.

    25) Support GRO in IPSEC protocols, from Steffen Klassert"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1764 commits)
    Revert "ath10k: Search SMBIOS for OEM board file extension"
    net: socket: fix recvmmsg not returning error from sock_error
    bnxt_en: use eth_hw_addr_random()
    bpf: fix unlocking of jited image when module ronx not set
    arch: add ARCH_HAS_SET_MEMORY config
    net: napi_watchdog() can use napi_schedule_irqoff()
    tcp: Revert "tcp: tcp_probe: use spin_lock_bh()"
    net/hsr: use eth_hw_addr_random()
    net: mvpp2: enable building on 64-bit platforms
    net: mvpp2: switch to build_skb() in the RX path
    net: mvpp2: simplify MVPP2_PRS_RI_* definitions
    net: mvpp2: fix indentation of MVPP2_EXT_GLOBAL_CTRL_DEFAULT
    net: mvpp2: remove unused register definitions
    net: mvpp2: simplify mvpp2_bm_bufs_add()
    net: mvpp2: drop useless fields in mvpp2_bm_pool and related code
    net: mvpp2: remove unused 'tx_skb' field of 'struct mvpp2_tx_queue'
    net: mvpp2: release reference to txq_cpu[] entry after unmapping
    net: mvpp2: handle too large value in mvpp2_rx_time_coal_set()
    net: mvpp2: handle too large value handling in mvpp2_rx_pkts_coal_set()
    net: mvpp2: remove useless arguments in mvpp2_rx_{pkts, time}_coal_set
    ...

    Linus Torvalds
     

17 Feb, 2017

1 commit


14 Feb, 2017

2 commits

  • Detected with clang:

    CC /tmp/build/perf/plugin_function.o
    plugin_function.c:145:6: warning: variable 'index' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    if (parent && ftrace_indent->set)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    plugin_function.c:148:29: note: uninitialized use occurs here
    trace_seq_printf(s, "%*s", index*3, "");
    ^~~~~
    plugin_function.c:145:2: note: remove the 'if' if its condition is always true
    if (parent && ftrace_indent->set)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    plugin_function.c:145:6: warning: variable 'index' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
    if (parent && ftrace_indent->set)
    ^~~~~~
    plugin_function.c:148:29: note: uninitialized use occurs here
    trace_seq_printf(s, "%*s", index*3, "");
    ^~~~~
    plugin_function.c:145:6: note: remove the '&&' if its condition is always true
    if (parent && ftrace_indent->set)
    ^~~~~~~~~
    plugin_function.c:133:11: note: initialize the variable 'index' to silence this warning
    int index;
    ^
    = 0
    2 warnings generated.

    Reviewed-by: Steven Rostedt (VMware)
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-b5wyjocel55gorl2jq2cbxrr@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • A undefined value was being used for the OLD_RING_BUFFER_TYPE_TIME_STAMP
    case entry, as the 'length' variable was not being initialized, fix it.

    Caught by the reporter when building tools/perf/ using clang, which emmitted
    this warning:

    kbuffer-parse.c:312:7: warning: variable 'length' is used uninitialized whenever switch case is taken [-Wsometimes-uninitialized]
    case OLD_RINGBUF_TYPE_TIME_EXTEND:
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    kbuffer-parse.c:339:29: note: uninitialized use occurs here
    kbuf->next = kbuf->index + length;
    ^~~~~~
    kbuffer-parse.c:297:21: note: initialize the variable 'length' to silence this warning
    unsigned int length;
    ^
    = 0

    Reported-by: Arnaldo Carvalho de Melo
    Signed-off-by: Steven Rostedt
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/r/20170213121418.47f279e8@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt (VMware)
     

08 Feb, 2017

1 commit

  • The dynamic-list-file used to export dynamic symbols introduced in

    commit e3d09ec8126f ("tools lib traceevent: Export dynamic symbols
    used by traceevent plugins")

    is generated without any sort of error checking.

    I experienced problems due to an old version of nm (v 0.158) that outputs
    in a format distinct from the assumed by the script.

    Robustify the built of dynamic symbol list by enforcing that the second
    column of $(NM) -u is either "U" (Undefined), "W" or "w" (undefined
    weak), which are the possible outputs from non-ancient $(NM) versions.
    Print an error if format is unexpected.

    v2: Accept "W" and "w" symbol options.

    Signed-off-by: David Carrillo-Cisneros
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: He Kuang
    Cc: Jiri Olsa
    Cc: Michal Marek
    Cc: Paul Turner
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Uwe Kleine-König
    Cc: Wang Nan
    Link: http://lkml.kernel.org/r/20170208052840.112182-1-davidcc@google.com
    [ Use STRING1 = STRING1 instead of == to make this work on Ubuntu systems ]
    Signed-off-by: Arnaldo Carvalho de Melo

    David Carrillo-Cisneros
     

26 Jan, 2017

1 commit


05 Jan, 2017

1 commit

  • …linux/kernel/git/acme/linux into perf/urgent

    Pull perf/urgent fixes and one improvement from Arnaldo Carvalho de Melo:

    Fixes:

    - Fix prev/next_prio formatting for deadline tasks in libtraceevent (Daniel Bristot de Oliveira)

    - Robustify reading of build-ids from /sys/kernel/note (Arnaldo Carvalho de Melo)

    - Fix building some sample/bpf in Alpine Linux 3.4 (Arnaldo Carvalho de Melo)

    - Fix 'make install-bin' to install libtraceevent plugins (Arnaldo Carvalho de Melo)

    - Fix 'perf record --switch-output' documentation and comment (Jiri Olsa)

    - Fix 'perf probe' for cross arch probing (Masami Hiramatsu)

    Improvement:

    - Show total scheduling time in 'perf sched timehist' (Namhyumg Kim)

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

    Ingo Molnar
     

04 Jan, 2017

1 commit

  • Currently, the sched:sched_switch tracepoint reports deadline tasks with
    priority -1. But when reading the trace via perf script I've got the
    following output:

    # ./d & # (d is a deadline task, see [1])
    # perf record -e sched:sched_switch -a sleep 1
    # perf script
    ...
    swapper 0 [000] 2146.962441: sched:sched_switch: swapper/0:0 [120] R ==> d:2593 [4294967295]
    d 2593 [000] 2146.972472: sched:sched_switch: d:2593 [4294967295] R ==> g:2590 [4294967295]

    The task d reports the wrong priority [4294967295]. This happens because
    the "int prio" is stored in an unsigned long long val. Although it is
    set as a %lld, as int is shorter than unsigned long long,
    trace_seq_printf prints it as a positive number.

    The fix is just to cast the val as an int, and print it as a %d,
    as in the sched:sched_switch tracepoint's "format".

    The output with the fix is:

    # ./d &
    # perf record -e sched:sched_switch -a sleep 1
    # perf script
    ...
    swapper 0 [000] 4306.374037: sched:sched_switch: swapper/0:0 [120] R ==> d:10941 [-1]
    d 10941 [000] 4306.383823: sched:sched_switch: d:10941 [-1] R ==> swapper/0:0 [120]

    [1] d.c

    ---
    #include
    #include
    #include
    #include
    #include

    struct sched_attr {
    __u32 size, sched_policy;
    __u64 sched_flags;
    __s32 sched_nice;
    __u32 sched_priority;
    __u64 sched_runtime, sched_deadline, sched_period;
    };

    int sched_setattr(pid_t pid, const struct sched_attr *attr, unsigned int flags)
    {
    return syscall(__NR_sched_setattr, pid, attr, flags);
    }

    int main(void)
    {
    struct sched_attr attr = {
    .size = sizeof(attr),
    .sched_policy = SCHED_DEADLINE, /* This creates a 10ms/30ms reservation */
    .sched_runtime = 10 * 1000 * 1000,
    .sched_period = attr.sched_deadline = 30 * 1000 * 1000,
    };

    if (sched_setattr(0, &attr, 0) < 0) {
    perror("sched_setattr");
    return -1;
    }

    for(;;);
    }
    ---

    Committer notes:

    Got the program from the provided URL, http://bristot.me/lkml/d.c,
    trimmed it and included in the cset log above, so that we have
    everything needed to test it in one place.

    Signed-off-by: Daniel Bristot de Oliveira
    Acked-by: Steven Rostedt
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Daniel Bristot de Oliveira
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/866ef75bcebf670ae91c6a96daa63597ba981f0d.1483443552.git.bristot@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Daniel Bristot de Oliveira
     

18 Dec, 2016

1 commit

  • Pull kbuild updates from Michal Marek:

    - prototypes for x86 asm-exported symbols (Adam Borowski) and a warning
    about missing CRCs (Nick Piggin)

    - asm-exports fix for LTO (Nicolas Pitre)

    - thin archives improvements (Nick Piggin)

    - linker script fix for CONFIG_LD_DEAD_CODE_DATA_ELIMINATION (Nick
    Piggin)

    - genksyms support for __builtin_va_list keyword

    - misc minor fixes

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    x86/kbuild: enable modversions for symbols exported from asm
    kbuild: fix scripts/adjust_autoksyms.sh* for the no modules case
    scripts/kallsyms: remove last remnants of --page-offset option
    make use of make variable CURDIR instead of calling pwd
    kbuild: cmd_export_list: tighten the sed script
    kbuild: minor improvement for thin archives build
    kbuild: modpost warn if export version crc is missing
    kbuild: keep data tables through dead code elimination
    kbuild: improve linker compatibility with lib-ksyms.o build
    genksyms: Regenerate parser
    kbuild/genksyms: handle va_list type
    kbuild: thin archives for multi-y targets
    kbuild: kallsyms allow 3-pass generation if symbols size has changed

    Linus Torvalds
     

11 Dec, 2016

1 commit


23 Nov, 2016

2 commits

  • Add a way to retrieve the preempt count as well as the latency flags from a
    pevent_record.

    int pevent_data_preempt_count(pevent, record);

    returns the preempt count of a record.

    int pevent_data_flags(pevent, record);

    returns the latency flags for a record.

    Signed-off-by: Steven Rostedt
    Acked-by: Namhyung Kim
    Cc: Andrew Morton
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/20161122113158.03a010a8@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     
  • Instead of using 1000000, use the define in time64.h instead.

    Also remove the the duplicate defines for NSECS_PER_SEC.

    Signed-off-by: Steven Rostedt
    Acked-by: Namhyung Kim
    Cc: Andrew Morton
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/20161121114149.67111981@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     

24 Oct, 2016

4 commits

  • Adding version support for libtraceevent.so object.

    Using the existing EVENT_PARSE_VERSION variable to construct
    the .so object version string, which now consists of:

    $(EP_VERSION).$(EP_PATCHLEVEL).$(EP_EXTRAVERSION)

    Looks like it was created for this purpose anyway.

    The build will now produce following traeceevent libraries:

    $ ll libtraceevent*
    libtraceevent.a
    libtraceevent.so -> libtraceevent.so.1.1.0
    libtraceevent.so.1 -> libtraceevent.so.1.1.0
    libtraceevent.so.1.1.0

    Also the install target will carry them:

    $ make DESTDIR=/tmp/krava prefix=/usr install
    INSTALL trace_plugins
    INSTALL libtraceevent.a
    INSTALL libtraceevent.so.1.1.0

    $ find /tmp/krava/ | xargs ls -l
    ...
    /tmp/krava/usr/lib64:
    total 572
    libtraceevent.a
    libtraceevent.so -> libtraceevent.so.1.1.0
    libtraceevent.so.1 -> libtraceevent.so.1.1.0
    libtraceevent.so.1.1.0
    ...

    Signed-off-by: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/n/tip-v64z62fh0dwt0ueie5usrnac@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • To ease up following patch.

    Signed-off-by: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/n/tip-zpv5gd8y7clwrhh6dq03ucd5@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Decompose the do_install function to ease up
    the following patch a little.

    Signed-off-by: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/n/tip-zzs19yx8seyors532vuer37w@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Adding install_headers target to install all headers
    under 'include/traceevent' path, like:

    $ make DESTDIR=/tmp/krava prefix=/usr install_headers
    $ find /tmp/krava/ -type f
    /tmp/krava/usr/include/traceevent/kbuffer.h
    /tmp/krava/usr/include/traceevent/event-utils.h
    /tmp/krava/usr/include/traceevent/event-parse.h

    Signed-off-by: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/n/tip-if70lj3zhdc3csdqm5webjvc@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

05 Oct, 2016

1 commit

  • When it's called with an offset less than or equal to the first event,
    it'll return a garbage value since the data is not initialized.

    Signed-off-by: Namhyung Kim
    Acked-by: Steven Rostedt
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20161001101700.29146-1-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

02 Aug, 2016

1 commit


14 Jul, 2016

1 commit

  • We need to include netinet/in.h to get the in6_addr struct definition, needed to
    build it on the Android NDK:

    In file included from event-parse.c:36:0:
    /home/acme/android/android-ndk-r12/platforms/android-24/arch-arm/usr/include/netinet/ip6.h:82:18: error: field 'ip6_src' has incomplete type
    struct in6_addr ip6_src; /* source address */

    And it is the canonical way of getting IPv6 definitions, as described,
    for instance, in Linux's 'man ipv6'

    Doing that uncovers another problem: this source file uses PRIu64 but
    doesn't include it, depending on it being included by chance via the now
    replaced header (netinet/ip6.h), fix it.

    Cc: Adrian Hunter
    Cc: Chris Phlipot
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Steven Rostedt
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-tilr31n3yaba1whsd47qlwa3@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

13 Jul, 2016

2 commits

  • Add a 'CPU' special field to allow the filter in trace-cmd report to
    filter on the task's CPU.

    By adding a special field 'CPU' (all caps) the user can now filter out
    tasks based on which CPU they are on. This is useful when filtering out
    (or in) a bunch of threads.

    -F 'CPU == 0'

    Signed-off-by: Steven Rostedt
    Cc: Andrew Morton
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/20160712093306.5b058103@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     
  • To make it portable to non-glibc systems, that follow the XSI variant
    instead of the GNU specific one that gets in place when _GNU_SOURCE is
    defined.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Steven Rostedt
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-c1gn8x978qfop65m510wy43o@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

12 May, 2016

1 commit

  • At the end of process_filter(), collapse_tree() was changed to update
    the parg parameter, but the reassignment after the call wasn't removed.

    What happens is that the "current_op" gets modified and freed and parg
    is assigned to the new allocated argument. But after the call to
    collapse_tree(), parg is assigned again to the just freed "current_op",
    and this causes the tool to crash.

    The current_op variable must also be assigned to NULL in case of error,
    otherwise it will cause it to be free()ed twice.

    Signed-off-by: Steven Rostedt
    Acked-by: Namhyung Kim
    Cc: stable@vger.kernel.org # 3.14+
    Fixes: 42d6194d133c ("tools lib traceevent: Refactor process_filter()")
    Link: http://lkml.kernel.org/r/20160511150936.678c18a1@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     

24 Mar, 2016

1 commit

  • Commit a6745330789f ("tools lib traceevent: Split pevent_print_event()
    into specific functionality functions") broke apart the function
    pevent_print_event() into three functions.

    The first function prints the comm, pid and CPU, the second prints the
    timestamp.

    But that commit added the printing of the CPU in the timestamp function,
    which now causes pevent_print_event() to duplicate the CPU output.

    Remove the redundant printing of the record's CPU from the timestamp
    function.

    Signed-off-by: Steven Rostedt
    Cc: Namhyung Kim
    Fixes: a6745330789f ("tools lib traceevent: Split pevent_print_event() into specific functionality functions")
    Link: http://lkml.kernel.org/r/20160323101628.459375d2@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     

11 Mar, 2016

1 commit

  • When evaluating values for print flags, if the value included a '~'
    operator, the parsing would fail. This broke kmalloc's parsing of:

    __print_flags(REC->gfp_flags, "|", {(unsigned
    long)((((((( gfp_t)(0x400000u|0x2000000u)) | (( gfp_t)0x40u) |
    (( gfp_t)0x80u) | (( gfp_t)0x20000u)) | (( gfp_t)0x02u)) |
    (( gfp_t)0x08u)) | (( gfp_t)0x4000u) | (( gfp_t)0x10000u) |
    (( gfp_t)0x1000u) | (( gfp_t)0x200u)) & ~(( gfp_t)0x2000000u))
    ^
    |
    here

    Signed-off-by: Steven Rostedt
    Reported-by: Arnaldo Carvalho de Melo
    Tested-by: David Ahern
    Cc: Andi Kleen
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Wang Nan
    Link: http://lkml.kernel.org/r/20160226181328.22f47129@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     

03 Mar, 2016

3 commits

  • When a long value is read on 32 bit machines for 64 bit output, the
    parsing needs to change "%lu" into "%llu", as the value is read
    natively.

    Unfortunately, if "%llu" is already there, the code will add another "l"
    to it and fail to parse it properly.

    Signed-off-by: Steven Rostedt
    Cc: Andrew Morton
    Link: http://lkml.kernel.org/r/20160209204237.337024613@goodmis.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt (Red Hat)
     
  • Had a bug where on error of parsing __print_array() where the fields are
    freed after they were allocated, but since they were not set to NULL,
    the freeing of the arg also tried to free the already freed fields
    causing a double free.

    Fix process_hex() while at it.

    Signed-off-by: Steven Rostedt
    Cc: Andrew Morton
    Link: http://lkml.kernel.org/r/20160209204237.188327674@goodmis.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt (Red Hat)
     
  • When rounding to microseconds, if the timestamp subsecond is between
    .999999500 and .999999999, it is rounded to .1000000, when it should
    instead increment the second counter due to the overflow.

    For example, if the timestamp is 1234.999999501 instead of seeing:

    1235.000000

    we see:

    1234.1000000

    Signed-off-by: Chaos.Chen
    Cc: Andrew Morton
    Link: http://lkml.kernel.org/r/20160209204236.824426460@goodmis.org
    [ fixed incrementing "secs" instead of decrementing it ]
    Signed-off-by: Steven Rostedt
    Signed-off-by: Arnaldo Carvalho de Melo

    Chaos.Chen
     

29 Feb, 2016

1 commit

  • Currently there's a single function that is used to display a record's
    data in human readable format. That's pevent_print_event().
    Unfortunately, this gives little room for adding other output within the
    line without updating that function call.

    I've decided to split that function into 3 parts.

    pevent_print_event_task() which prints the task comm, pid and the CPU
    pevent_print_event_time() which outputs the record's timestamp
    pevent_print_event_data() which outputs the rest of the event data.

    pevent_print_event() now simply calls these three functions.

    To save time from doing the search for event from the record's type, I
    created a new helper function called pevent_find_event_by_record(),
    which returns the record's event, and this event has to be passed to the
    above functions.

    Signed-off-by: Steven Rostedt
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/20160229090128.43a56704@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     

23 Feb, 2016

1 commit

  • The operation '%' is not implemented on event-parse.c, causing an error
    when parsing events with '%' the operation in its printk format. For
    example,

    # perf record -e sched:sched_deadline_yield ~/yield-test
    Warning: [sched:sched_deadline_yield] unknown op '%'
    ....
    # perf script
    Warning: [sched:sched_deadline_yield] unknown op '%'
    test 1641 [006] 3364.109319: sched:sched_deadline_yield: \
    [FAILED TO PARSE] now=3364109314595 \
    deadline=3364139295135 runtime=19975597

    This patch implements the '%' operation. With this patch, we see the
    correct output:

    # perf record -e sched:sched_deadline_yield ~/yield-test
    No Warning

    # perf script
    yield-test 4005 [001] 4623.650978: sched:sched_deadline_yield: \
    now=4623.650974050 \
    deadline=4623.680957364 remaining_runtime=19979611

    Signed-off-by: Daniel Bristot de Oliveira
    Reviewed-by: Steven Rostedt
    Cc: Juri Lelli
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-rt-users
    Link: http://lkml.kernel.org/r/5c96a395c56cea6d3d13d949051bdece86cc26e0.1456157869.git.bristot@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Daniel Bristot de Oliveira
     

24 Jan, 2016

1 commit

  • Pull rdma updates from Doug Ledford:
    "Initial roundup of 4.5 merge window patches

    - Remove usage of ib_query_device and instead store attributes in
    ib_device struct

    - Move iopoll out of block and into lib, rename to irqpoll, and use
    in several places in the rdma stack as our new completion queue
    polling library mechanism. Update the other block drivers that
    already used iopoll to use the new mechanism too.

    - Replace the per-entry GID table locks with a single GID table lock

    - IPoIB multicast cleanup

    - Cleanups to the IB MR facility

    - Add support for 64bit extended IB counters

    - Fix for netlink oops while parsing RDMA nl messages

    - RoCEv2 support for the core IB code

    - mlx4 RoCEv2 support

    - mlx5 RoCEv2 support

    - Cross Channel support for mlx5

    - Timestamp support for mlx5

    - Atomic support for mlx5

    - Raw QP support for mlx5

    - MAINTAINERS update for mlx4/mlx5

    - Misc ocrdma, qib, nes, usNIC, cxgb3, cxgb4, mlx4, mlx5 updates

    - Add support for remote invalidate to the iSER driver (pushed
    through the RDMA tree due to dependencies, acknowledged by nab)

    - Update to NFSoRDMA (pushed through the RDMA tree due to
    dependencies, acknowledged by Bruce)"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (169 commits)
    IB/mlx5: Unify CQ create flags check
    IB/mlx5: Expose Raw Packet QP to user space consumers
    {IB, net}/mlx5: Move the modify QP operation table to mlx5_ib
    IB/mlx5: Support setting Ethernet priority for Raw Packet QPs
    IB/mlx5: Add Raw Packet QP query functionality
    IB/mlx5: Add create and destroy functionality for Raw Packet QP
    IB/mlx5: Refactor mlx5_ib_qp to accommodate other QP types
    IB/mlx5: Allocate a Transport Domain for each ucontext
    net/mlx5_core: Warn on unsupported events of QP/RQ/SQ
    net/mlx5_core: Add RQ and SQ event handling
    net/mlx5_core: Export transport objects
    IB/mlx5: Expose CQE version to user-space
    IB/mlx5: Add CQE version 1 support to user QPs and SRQs
    IB/mlx5: Fix data validation in mlx5_ib_alloc_ucontext
    IB/sa: Fix netlink local service GFP crash
    IB/srpt: Remove redundant wc array
    IB/qib: Improve ipoib UD performance
    IB/mlx4: Advertise RoCE v2 support
    IB/mlx4: Create and use another QP1 for RoCEv2
    IB/mlx4: Enable send of RoCE QP1 packets with IP/UDP headers
    ...

    Linus Torvalds
     

07 Jan, 2016

1 commit

  • The print_event_field() and print_event_fields() functions print basic
    information of a given field or event without the print format. They'll
    be used by dynamic sort keys later.

    Committer note:

    Rename it to pevent_print_field[s]() to get proper namespacing, as
    discussed with Steven Rostedt.

    Signed-off-by: Namhyung Kim
    Acked-by: Jiri Olsa
    Acked-by: Steven Rostedt
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Wang Nan
    Link: http://lkml.kernel.org/r/1450876121-22494-1-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

12 Dec, 2015

1 commit


24 Nov, 2015

1 commit

  • When a long value is read on 32 bit machines for 64 bit output, the
    parsing needs to change "%lu" into "%llu", as the value is read
    natively.

    Unfortunately, if "%llu" is already there, the code will add another "l"
    to it and fail to parse it properly.

    Signed-off-by: Steven Rostedt
    Acked-by: Namhyung Kim
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20151116172516.4b79b109@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo

    Steven Rostedt
     

23 Oct, 2015

1 commit

  • Commits such as 65dd297ac25565 ("xfs: %pF is only for function
    pointers") caused a regression because pretty_print() didn't support
    %ps/%pS. The current %pf/%pF implementation in pretty_print() is what
    %ps/%pS is supposed to do, so use the same code for %ps/%pS.

    Addressing the incorrect %pf/%pF implementation is beyond the scope of
    this patch.

    Signed-off-by: Scott Wood
    Acked-by: Steven Rostedt
    Cc: Dave Chinner
    Link: http://lkml.kernel.org/r/20150831211637.GA12848@home.buserror.net
    Signed-off-by: Arnaldo Carvalho de Melo

    Scott Wood
     

21 Oct, 2015

1 commit

  • The format of the role word has changed through the years and the plugin
    was never updated; some VMX exit reasons were missing too.

    Signed-off-by: Paolo Bonzini
    Acked-by: Steven Rostedt
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: kvm@vger.kernel.org
    Link: http://lkml.kernel.org/r/1443695293-31127-1-git-send-email-pbonzini@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Paolo Bonzini