15 Jan, 2016

2 commits


15 Dec, 2015

1 commit

  • [ Upstream commit d7475de58575c904818efa369c82e88c6648ce2e ]

    Use the local uapi headers to keep in sync with "recently" added #define's
    (e.g. SKF_AD_VLAN_TPID). Refactored CFLAGS, and bpf_asm doesn't need -I.

    Fixes: 3f356385e8a4 ("filter: bpf_asm: add minimal bpf asm tool")
    Signed-off-by: Kamal Mostafa
    Acked-by: Daniel Borkmann
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Kamal Mostafa
     

23 Oct, 2015

6 commits

  • commit c2e4b24ff848bb180f9b9cd873a38327cd219ad2 upstream.

    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: Juri Lelli
    Signed-off-by: Kapileshwar Singh
    Reviewed-by: Steven Rostedt
    Cc: David Ahern
    Cc: Javi Merino
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/1442928123-13824-1-git-send-email-kapileshwar.singh@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Kapileshwar Singh
     
  • commit caa470475d9b59eeff093ae650800d34612c4379 upstream.

    The original patch introducing this header wrote the number of CPUs available
    and online in one order and then swapped those values when reading, fix it.

    Before:

    # perf record usleep 1
    # perf report --header-only | grep 'nrcpus \(online\|avail\)'
    # nrcpus online : 4
    # nrcpus avail : 4
    # echo 0 > /sys/devices/system/cpu/cpu2/online
    # perf record usleep 1
    # perf report --header-only | grep 'nrcpus \(online\|avail\)'
    # nrcpus online : 4
    # nrcpus avail : 3
    # echo 0 > /sys/devices/system/cpu/cpu1/online
    # perf record usleep 1
    # perf report --header-only | grep 'nrcpus \(online\|avail\)'
    # nrcpus online : 4
    # nrcpus avail : 2

    After the fix, bringing back the CPUs online:

    # perf report --header-only | grep 'nrcpus \(online\|avail\)'
    # nrcpus online : 2
    # nrcpus avail : 4
    # echo 1 > /sys/devices/system/cpu/cpu2/online
    # perf record usleep 1
    # perf report --header-only | grep 'nrcpus \(online\|avail\)'
    # nrcpus online : 3
    # nrcpus avail : 4
    # echo 1 > /sys/devices/system/cpu/cpu1/online
    # perf record usleep 1
    # perf report --header-only | grep 'nrcpus \(online\|avail\)'
    # nrcpus online : 4
    # nrcpus avail : 4

    Acked-by: Namhyung Kim
    Cc: Adrian Hunter
    Cc: Borislav Petkov
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Stephane Eranian
    Cc: Wang Nan
    Fixes: fbe96f29ce4b ("perf tools: Make perf.data more self-descriptive (v8)")
    Link: http://lkml.kernel.org/r/20150911153323.GP23511@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Arnaldo Carvalho de Melo
     
  • commit 93df8a1ed6231727c5db94a80b1a6bd5ee67cec3 upstream.

    perf currently fails to build on MIPS as there is no
    tools/perf/arch/mips/Build file. Adding an empty file fixes this as
    there are no MIPS-specific sources to build.

    It looks like the same is needed for Alpha and PA-RISC, though I
    haven't been able to test those.

    Signed-off-by: Ben Hutchings
    Fixes: 5e8c0fb6a957 ("perf build: Add arch x86 objects building")
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1438704627.7315.2.camel@decadent.org.uk
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Ben Hutchings
     
  • commit 601083cffb7cabdcc55b8195d732f0f7028570fa upstream.

    print_aggr() fails to print per-core/per-socket statistics after commit
    582ec0829b3d ("perf stat: Fix per-socket output bug for uncore events")
    if events have differnt cpus. Because in print_aggr(), aggr_get_id needs
    index (not cpu id) to find core/pkg id. Also, evsel cpu maps should be
    used to get aggregated id.

    Here is an example:

    Counting events cycles,uncore_imc_0/cas_count_read/. (Uncore event has
    cpumask 0,18)

    $ perf stat -e cycles,uncore_imc_0/cas_count_read/ -C0,18 --per-core sleep 2

    Without this patch, it failes to get CPU 18 result.

    Performance counter stats for 'CPU(s) 0,18':

    S0-C0 1 7526851 cycles
    S0-C0 1 1.05 MiB uncore_imc_0/cas_count_read/
    S1-C0 0 cycles
    S1-C0 0 MiB uncore_imc_0/cas_count_read/

    With this patch, it can get both CPU0 and CPU18 result.

    Performance counter stats for 'CPU(s) 0,18':

    S0-C0 1 6327768 cycles
    S0-C0 1 0.47 MiB uncore_imc_0/cas_count_read/
    S1-C0 1 330228 cycles
    S1-C0 1 0.29 MiB uncore_imc_0/cas_count_read/

    Signed-off-by: Kan Liang
    Acked-by: Jiri Olsa
    Acked-by: Stephane Eranian
    Cc: Adrian Hunter
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Fixes: 582ec0829b3d ("perf stat: Fix per-socket output bug for uncore events")
    Link: http://lkml.kernel.org/r/1435820925-51091-1-git-send-email-kan.liang@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Kan Liang
     
  • commit e8e6d37e73e6b950c891c780745460b87f4755b6 upstream.

    When we introduce a new sort key, we need to update the
    hists__calc_col_len() function accordingly, otherwise the width
    will be limited to strlen(header).

    We can't update it when obtaining a line value for a column (for
    instance, in sort__srcline_cmp()), because we reset it all when doing a
    resort (see hists__output_recalc_col_len()), so we need to, from what is
    in the hist_entry fields, set each of the column widths.

    Cc: Namhyung Kim
    Cc: Andi Kleen
    Cc: Jiri Olsa
    Fixes: 409a8be61560 ("perf tools: Add sort by src line/number")
    Link: http://lkml.kernel.org/n/tip-jgbe0yx8v1gs89cslr93pvz2@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Arnaldo Carvalho de Melo
     
  • commit b5cabbcbd157a4bf5a92dfc85134999a3b55342d upstream.

    A copy of /proc/kcore containing the kernel text can be made to the
    buildid cache. e.g.

    perf buildid-cache -v -k /proc/kcore

    To workaround objdump limitations, a copy is also made when annotating
    against /proc/kcore.

    The copying process stops working from libelf about v1.62 onwards (the
    problem was found with v1.63).

    The cause is that a call to gelf_getphdr() in kcore__add_phdr() fails
    because additional validation has been added to gelf_getphdr().

    The use of gelf_getphdr() is a misguided attempt to get default
    initialization of the Gelf_Phdr structure. That should not be
    necessary because every member of the Gelf_Phdr structure is
    subsequently assigned. So just remove the call to gelf_getphdr().

    Similarly, a call to gelf_getehdr() in gelf_kcore__init() can be
    removed also.

    Committer notes:

    Note to stable@kernel.org, from Adrian in the cover letter for this
    patchkit:

    The "Fix copying of /proc/kcore" problem goes back to v3.13 if you think
    it is important enough for stable.

    Signed-off-by: Adrian Hunter
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/1443089122-19082-3-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Adrian Hunter
     

11 Aug, 2015

2 commits

  • commit 0bc2f2f7d080561cc484d2d0a162a9396bed3383 upstream.

    When setting yup the symbols library we setup several filter lists,
    for dsos, comms, symbols, etc, and there is code that, if there are
    filters, do certain operations, like recalculate the number of non
    filtered histogram entries in the top/report TUI.

    But they were considering just the "Zoom" filters, when they need to
    take into account as well the above mentioned filters (perf top --comms,
    --dsos, etc).

    So store in symbol_conf.has_filter true if any of those filters is in
    place.

    Cc: Adrian Hunter
    Cc: Borislav Petkov
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/n/tip-f5edfmhq69vfvs1kmikq1wep@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Cc: Andre Tomt
    Signed-off-by: Greg Kroah-Hartman

    Arnaldo Carvalho de Melo
     
  • commit 9c0fa8dd3d58de8b688fda758eea1719949c7f0a upstream.

    At some point:

    commit 2c86c7ca7606
    Author: Namhyung Kim
    Date: Mon Mar 17 18:18:54 2014 -0300

    perf report: Merge al->filtered with hist_entry->filtered

    We stopped dropping samples for things filtered via the --comms, --dsos,
    --symbols, etc, i.e. things marked as filtered in the symbol resolution
    routines (thread__find_addr_map(), perf_event__preprocess_sample(),
    etc).

    But then, in:

    commit 268397cb2a47
    Author: Namhyung Kim
    Date: Tue Apr 22 14:49:31 2014 +0900

    perf top/tui: Update nr_entries properly after a filter is applied

    We don't take into account entries that were filtered in
    perf_event__preprocess_sample() and friends, which leads to
    inconsistency in the browser seek routines, that expects the number of
    hist_entry->filtered entries to match what it thinks is the number of
    unfiltered, browsable entries.

    So, for instance, when we do:

    perf top --symbols ___non_existent_symbol___

    the hist_browser__nr_entries() routine thinks there are no filters in
    place, uses the hists->nr_entries but all entries are filtered, leading
    to a segfault.

    Tested with:

    perf top --symbols malloc,free --percentage=relative

    Freezing, by pressing 'f', at any time and doing the math on the
    percentages ends up with 100%, ditto for:

    perf top --dsos libpthread-2.20.so,libxul.so --percentage=relative

    Both were segfaulting, all fixed now.

    More work needed to do away with checking if filters are in place, we
    should just use the nr_non_filtered_samples counter, no need to
    conditionally use it or hists.nr_filter, as what the browser does is
    just show unfiltered stuff. An audit of how it is being accounted is
    needed, this is the minimal fix.

    Reported-by: Michael Petlan
    Fixes: 268397cb2a47 ("perf top/tui: Update nr_entries properly after a filter is applied")
    Cc: Adrian Hunter
    Cc: Borislav Petkov
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/n/tip-6w01d5q97qk0d64kuojme5in@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Arnaldo Carvalho de Melo
     

04 Aug, 2015

1 commit

  • commit 2b42b09b88c831ba4da2d669581dde371c38c2af upstream.

    With commit: e1e455f4f4d3 (perf tools: Work around lack of sched_getcpu
    in glibc < 2.6), perf_bench numa mem with -c or -m option is not able to
    correctly calculate convergence.

    With the above commit, sched_getcpu always seems to return -1. The
    intention of commit e1e455f was to add a sched_getcpu in glibc < 2.6.
    Hence keep the sched_getcpu definition under an ifdef.

    This regression happened occurred between v4.0 and v4.1

    Signed-off-by: Srikar Dronamraju
    Acked-by: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Masami Hiramatsu
    Cc: Namhyung Kim
    Cc: Vinson Lee
    Fixes: e1e455f4f4d3 ("perf tools: Work around lack of sched_getcpu in glibc < 2.6")
    Link: http://lkml.kernel.org/r/20150624111004.GA5220@linux.vnet.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Srikar Dronamraju
     

22 Jul, 2015

1 commit

  • commit 60df4642a83546fa6ea8286f5094ce8c0906c3ec upstream.

    Make 3.81 doesn't have the 'undefine' command. Using undefine
    to clear LDFLAGS fails when make version 3.81 is used. Fix it
    to use override to clear LDFLAGS.

    Tested-by: Shuah Khan
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Michael Ellerman
    Link: http://lkml.kernel.org/r/20150514151225.GH23588@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Shuah Khan
    Cc: Sudip Mukherjee
    Signed-off-by: Greg Kroah-Hartman

    Arnaldo Carvalho de Melo
     

30 Jun, 2015

1 commit

  • commit 75e84ab906ef8935cff3df3d8929f1bafea81599 upstream.

    Invoking Makefile.perf with prefix= breaks the build since Makefile.perf
    hands that variable down to Makefile.build where it overrides

    prefix := $(subst ./,,$(OUTPUT)$(dir)/)

    leading to errors like this:

    No rule to make target '/usrabspath.o', needed by '/usrlibperf-in.o'

    Signed-off-by: Lukas Wunner
    Acked-by: Jiri Olsa
    Cc: David Ahern
    Fixes: c819e2cf2eb6f65d3208d195d7a0edef6108d5
    Link: http://lkml.kernel.org/r/5582c48a.84a22b0a.a918.5285SMTPIN_ADDED_MISSING@mx.google.com
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Lukas Wunner
     

06 Jun, 2015

1 commit

  • Pull x86 fixes from Ingo Molnar:
    "Misc fixes:

    - early_idt_handlers[] fix that fixes the build with bleeding edge
    tooling

    - build warning fix on GCC 5.1

    - vm86 fix plus self-test to make it harder to break it again"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/asm/irq: Stop relying on magic JMP behavior for early_idt_handlers
    x86/asm/entry/32, selftests: Add a selftest for kernel entries from VM86 mode
    x86/boot: Add CONFIG_PARAVIRT_SPINLOCKS quirk to arch/x86/boot/compressed/misc.h
    x86/asm/entry/32: Really make user_mode() work correctly for VM86 mode

    Linus Torvalds
     

01 Jun, 2015

1 commit

  • Pull turbostat tool fixes from Len Brown:
    "Just one minor kernel dependency in this batch -- added a #define to
    msr-index.h"

    * 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    tools/power turbostat: update version number to 4.7
    tools/power turbostat: allow running without cpu0
    tools/power turbostat: correctly decode of ENERGY_PERFORMANCE_BIAS
    tools/power turbostat: enable turbostat to support Knights Landing (KNL)
    tools/power turbostat: correctly display more than 2 threads/core

    Linus Torvalds
     

30 May, 2015

1 commit

  • Test a couple of special cases in 32-bit kernels for entries
    from vm86 mode. This will OOPS both old kernels due to a bug
    and and 4.1-rc5 due to a regression I introduced, and it should
    make sure that the SYSENTER-from-vm86-mode hack in the kernel
    keeps working.

    Signed-off-by: Andy Lutomirski
    Cc: Jan Beulich
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Shuah Khan
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/09a9916761e0a9e42d4922f147af45a0079cc1e8.1432936374.git.luto@kernel.org
    Tests: 394838c96013 x86/asm/entry/32: Fix user_mode() misuses
    Tests: 7ba554b5ac69 x86/asm/entry/32: Really make user_mode() work correctly for VM86 mode
    Signed-off-by: Ingo Molnar

    Andy Lutomirski
     

28 May, 2015

5 commits


27 May, 2015

1 commit

  • With recent debugging, I noticed that bpf_jit_disasm segfaults when
    there's no debugging output from the JIT compiler to the kernel log.

    Reason is that when regexec(3) doesn't match on anything, start/end
    offsets are not being filled out and contain some uninitialized garbage
    from stack. Thus, we need zero out offsets first.

    Signed-off-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Daniel Borkmann
     

17 May, 2015

2 commits

  • Pull thermal fixes from Zhang Rui:
    "Specifics:

    - fix an issue in intel_powerclamp driver that idle injection target
    is not accurately maintained on newer Intel CPUs. Package C8 to
    C10 states are introduced on these CPUs but they were not included
    in the package c-state residency calculation. From Jacob Pan.

    - fix a problem that package c-state idle injection was missing on
    Broadwell server, by adding its id to intel_powerclamp driver.
    From Jacob Pan.

    - a couple of small fixes and cleanups from Joe Perches, Mathias
    Krause, Dan Carpenter and Anand Moon"

    * 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
    tools/thermal: tmon: fixed the 'make install' command
    thermal: rockchip: fix an error code
    thermal/powerclamp: fix missing newer package c-states
    thermal/intel_powerclamp: add id for broadwell server
    thermal/intel_powerclamp: add __init / __exit annotations
    thermal: Use bool function return values of true/false not 1/0

    Linus Torvalds
     
  • …/git/shuah/linux-kselftest

    Pull kselftest fixes from Shuah Khan:
    "Urgent fix for Kselftest regression introduced in 4.1-rc1 by the new
    x86 test due to its hard dependency on 32-bit build environment.

    A set of 5 patches fix the make kselftest run and kselftest install"

    * tag 'linux-kselftest-4.1-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests, x86: Rework x86 target architecture detection
    selftests, x86: Remove useless run_tests rule
    selftests/x86: install tests
    selftest/x86: have no dependency on all when cross building
    selftest/x86: build both bitnesses

    Linus Torvalds
     

15 May, 2015

1 commit


13 May, 2015

9 commits


09 May, 2015

1 commit

  • To install tmon we issue "make install" which produces bellow error.

    root@odroidxu3:/usr/src/odroidxu3-4.y-testing/tools/thermal/tmon# make install
    mkdir -p /usr/bin
    install -m 755 -p "tmon" "/usr/bin/tmon"
    mkdir -p /
    install -m 644 -p "" "/"
    install: cannot stat ‘’: No such file or directory
    make: [install] Error 1 (ignored)

    Signed-off-by: Anand Moon
    Acked-by: Jacob Pan
    Signed-off-by: Zhang Rui

    Anand Moon
     

07 May, 2015

1 commit

  • Pull perf fixes from Ingo Molnar:
    "Mostly tooling fixes, but also an uncore PMU driver fix and an uncore
    PMU driver hardware-enablement addition"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf probe: Fix segfault if passed with ''.
    perf report: Fix -T/--threads option to work again
    perf bench numa: Fix immediate meeting of convergence condition
    perf bench numa: Fixes of --quiet argument
    perf bench futex: Fix hung wakeup tasks after requeueing
    perf probe: Fix bug with global variables handling
    perf top: Fix a segfault when kernel map is restricted.
    tools lib traceevent: Fix build failure on 32-bit arch
    perf kmem: Fix compiles on RHEL6/OL6
    tools lib api: Undefine _FORTIFY_SOURCE before setting it
    perf kmem: Consistently use PRIu64 for printing u64 values
    perf trace: Disable events and drain events when forked workload ends
    perf trace: Enable events when doing system wide tracing and starting a workload
    perf/x86/intel/uncore: Move PCI IDs for IMC to uncore driver
    perf/x86/intel/uncore: Add support for Intel Haswell ULT (lower power Mobile Processor) IMC uncore PMUs
    perf/x86/intel: Add cpu_(prepare|starting|dying) for core_pmu

    Linus Torvalds
     

05 May, 2015

1 commit

  • Since parse_perf_probe_point() deals with a user passed argument, we
    should not assume it to be a valid string.

    Without this patch, if pass '' to perf probe, a segfault raises:

    $ perf probe -a ''
    Segmentation fault

    This patch checks argument of parse_perf_probe_point() before
    string processing.

    After this patch:

    $ perf probe -a ''

    usage: perf probe [] 'PROBEDEF' ['PROBEDEF' ...]
    or: perf probe [] --add 'PROBEDEF' [--add 'PROBEDEF' ...]
    ...

    Signed-off-by: Wang Nan
    Acked-by: Masami Hiramatsu
    Tested-by: Arnaldo Carvalho de Melo
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Zefan Li
    Link: http://lkml.kernel.org/r/1430210769-94177-1-git-send-email-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Wang Nan
     

01 May, 2015

2 commits

  • The commit 512ae1bd6acb ("perf tools: Consolidate management of default
    sort orders") changed default value of the 'sort_order' variable to NULL
    indicating that users don't set any sort keys on the command line.

    However it missed to update a check in perf_evlist__tty_browse_hists()
    so that 'perf report -T' cannot show the per-thread values after the
    normal output. This patch fixes it to work again.

    Note that the -T option only works on --stdio and neither --sort nor
    --parent option was given.

    Signed-off-by: Namhyung Kim
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1430309328-28317-1-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • My patch to add install support for the powerpc selftests had a typo,
    leading to the three tests in the pmu directory itself not being
    installed.

    Fixes: 6faeeea44b84 ("selftests: Add install support for the powerpc tests")
    Signed-off-by: Michael Ellerman

    Michael Ellerman