10 Feb, 2014

1 commit

  • Pull perf fixes from Ingo Molnar:
    "Tooling fixes, mostly related to the KASLR fallout, but also other
    fixes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf buildid-cache: Check relocation when checking for existing kcore
    perf tools: Adjust kallsyms for relocated kernel
    perf tests: No need to set up ref_reloc_sym
    perf symbols: Prevent the use of kcore if the kernel has moved
    perf record: Get ref_reloc_sym from kernel map
    perf machine: Set up ref_reloc_sym in machine__create_kernel_maps()
    perf machine: Add machine__get_kallsyms_filename()
    perf tools: Add kallsyms__get_function_start()
    perf symbols: Fix symbol annotation for relocated kernel
    perf tools: Fix include for non x86 architectures
    perf tools: Fix AAAAARGH64 memory barriers
    perf tools: Demangle kernel and kernel module symbols too
    perf/doc: Remove mention of non-existent set_perf_event_pending() from design.txt

    Linus Torvalds
     

03 Feb, 2014

1 commit

  • Pull turbostat updates from Len Brown.

    * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    tools/power turbostat: introduce -s to dump counters
    tools/power turbostat: remove unused command line option
    turbostat: Add option to report joules consumed per sample
    turbostat: run on HSX
    turbostat: Add a .gitignore to ignore the compiled turbostat binary
    turbostat: Clean up error handling; disambiguate error messages; use err and errx
    turbostat: Factor out common function to open file and exit on failure
    turbostat: Add a helper to parse a single int out of a file
    turbostat: Check return value of fscanf
    turbostat: Use GCC's CPUID functions to support PIC
    turbostat: Don't attempt to printf an off_t with %zx
    turbostat: Don't put unprocessed uapi headers in the include path

    Linus Torvalds
     

02 Feb, 2014

2 commits


01 Feb, 2014

10 commits

  • perf buildid-cache does not make another copy of kcore if the buildid
    and modules match an existing copy.

    That does not take into account the possibility that the kernel has been
    relocated.

    Extend the check to check if the reference relocation symbol matches
    too, otherwise do make a copy.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-10-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • If the kernel is relocated at boot time, kallsyms will not match data
    recorded previously.

    That does not matter for modules because they are corrected anyway. It
    also does not matter if vmlinux is being used for symbols. But if perf
    tools has only kallsyms then the symbols will not match.

    Fix by applying the delta gained by comparing the old and current
    addresses of the relocation reference symbol.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-9-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Now that ref_reloc_sym is set up by machine__create_kernel_maps(), the
    "vmlinux symtab matches kallsyms" test does have to do it.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-8-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Use of kcore is predicated upon it matching the recorded data. If the
    kernel has been relocated at boot time (i.e. since the data was
    recorded) then do not use kcore.

    Note that it is possible to make a copy of kcore at the time the data is
    recorded using 'perf buildid-cache'. Then the perf tools will use the
    copy because it does match the data.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-7-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Now that ref_reloc_sym is set up when the kernel map is created,
    'perf record' does not need to pass the symbol names to
    perf_event__synthesize_kernel_mmap() which can read the values needed
    from ref_reloc_sym directly.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-6-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • The ref_reloc_sym is always needed for the kernel map in order to check
    for relocation. Consequently set it up when the kernel map is created.
    Otherwise it was only being set up by 'perf record'.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-5-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Separate out the logic used to make the kallsyms full path name for a
    machine. It will be reused in a subsequent patch.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-4-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Separate out the logic used to find the start address of the reference
    symbol used to track kernel relocation. kallsyms__get_function_start()
    is used in subsequent patches.

    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-3-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Kernel maps map memory addresses to file offsets.

    For symbol annotation, objdump needs the object VMA addresses. For an
    unrelocated kernel, that is the same as the memory address.

    The addresses passed to objdump for symbol annotation did not take into
    account kernel relocation.

    This patch fixes that.

    Reported-by: Linus Torvalds
    Signed-off-by: Adrian Hunter
    Tested-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1391004884-10334-2-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Commit 71ae8aac ("lib: introduce arch optimized hash library") added an
    include to for setting up an architecture specific fast
    hash.

    Since perf includes directly the non-uapi kernel header, it cannot find
    on non-x86 and thus prevents perf to be compiled on every
    architecture other than x86.

    The problem is the inclusion of in hash.h that results in
    the following error originating from util/evlist.c:

    fatal error: asm/hash.h: No such file or directory

    This commit simply adds an empty stub/file to fix the
    compile issue on non-x86 architectures.

    As perf does not use any of these new functions, it fixes the
    compilation and therefore seems to be the most appropriate solution to
    go with.

    Signed-off-by: Francesco Fusco
    Link: http://lkml.kernel.org/r/2cf8143aad65a6aa6fe30325ef8a65847141afa2.1390829373.git.ffusco@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Francesco Fusco
     

30 Jan, 2014

1 commit

  • Someone got the load and store barriers mixed up for AAAAARGH64. Turn
    them the right side up.

    Reported-by: Will Deacon
    Signed-off-by: Peter Zijlstra
    Fixes: a94d342b9cb0 ("tools/perf: Add required memory barriers")
    Cc: Ingo Molnar
    Cc: Will Deacon
    Link: http://lkml.kernel.org/r/20140124154002.GF31570@twins.programming.kicks-ass.net
    Signed-off-by: Arnaldo Carvalho de Melo

    Peter Zijlstra
     

27 Jan, 2014

1 commit

  • Some kernels contain C++ code, and thus their symbols need to be
    demangled. This allows 'perf kvm top' to generate readable output.

    Signed-off-by: Avi Kivity
    Cc: Ingo Molnar
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/26f71bf5bf7ee1408e3f1a803556d5df18223ef1.1390420726.git.avi@cloudius-systems.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Avi Kivity
     

26 Jan, 2014

3 commits

  • set_perf_event_pending() was removed in e360adbe ("irq_work: Add
    generic hardirq context callbacks").

    Signed-off-by: Baruch Siach
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Link: http://lkml.kernel.org/r/4c54761865d40210be0628cb84701afc5d57b5d8.1390686193.git.baruch@tkos.co.il
    Signed-off-by: Ingo Molnar

    Baruch Siach
     
  • Pull networking updates from David Miller:

    1) BPF debugger and asm tool by Daniel Borkmann.

    2) Speed up create/bind in AF_PACKET, also from Daniel Borkmann.

    3) Correct reciprocal_divide and update users, from Hannes Frederic
    Sowa and Daniel Borkmann.

    4) Currently we only have a "set" operation for the hw timestamp socket
    ioctl, add a "get" operation to match. From Ben Hutchings.

    5) Add better trace events for debugging driver datapath problems, also
    from Ben Hutchings.

    6) Implement auto corking in TCP, from Eric Dumazet. Basically, if we
    have a small send and a previous packet is already in the qdisc or
    device queue, defer until TX completion or we get more data.

    7) Allow userspace to manage ipv6 temporary addresses, from Jiri Pirko.

    8) Add a qdisc bypass option for AF_PACKET sockets, from Daniel
    Borkmann.

    9) Share IP header compression code between Bluetooth and IEEE802154
    layers, from Jukka Rissanen.

    10) Fix ipv6 router reachability probing, from Jiri Benc.

    11) Allow packets to be captured on macvtap devices, from Vlad Yasevich.

    12) Support tunneling in GRO layer, from Jerry Chu.

    13) Allow bonding to be configured fully using netlink, from Scott
    Feldman.

    14) Allow AF_PACKET users to obtain the VLAN TPID, just like they can
    already get the TCI. From Atzm Watanabe.

    15) New "Heavy Hitter" qdisc, from Terry Lam.

    16) Significantly improve the IPSEC support in pktgen, from Fan Du.

    17) Allow ipv4 tunnels to cache routes, just like sockets. From Tom
    Herbert.

    18) Add Proportional Integral Enhanced packet scheduler, from Vijay
    Subramanian.

    19) Allow openvswitch to mmap'd netlink, from Thomas Graf.

    20) Key TCP metrics blobs also by source address, not just destination
    address. From Christoph Paasch.

    21) Support 10G in generic phylib. From Andy Fleming.

    22) Try to short-circuit GRO flow compares using device provided RX
    hash, if provided. From Tom Herbert.

    The wireless and netfilter folks have been busy little bees too.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (2064 commits)
    net/cxgb4: Fix referencing freed adapter
    ipv6: reallocate addrconf router for ipv6 address when lo device up
    fib_frontend: fix possible NULL pointer dereference
    rtnetlink: remove IFLA_BOND_SLAVE definition
    rtnetlink: remove check for fill_slave_info in rtnl_have_link_slave_info
    qlcnic: update version to 5.3.55
    qlcnic: Enhance logic to calculate msix vectors.
    qlcnic: Refactor interrupt coalescing code for all adapters.
    qlcnic: Update poll controller code path
    qlcnic: Interrupt code cleanup
    qlcnic: Enhance Tx timeout debugging.
    qlcnic: Use bool for rx_mac_learn.
    bonding: fix u64 division
    rtnetlink: add missing IFLA_BOND_AD_INFO_UNSPEC
    sfc: Use the correct maximum TX DMA ring size for SFC9100
    Add Shradha Shah as the sfc driver maintainer.
    net/vxlan: Share RX skb de-marking and checksum checks with ovs
    tulip: cleanup by using ARRAY_SIZE()
    ip_tunnel: clear IPCB in ip_tunnel_xmit() in case dst_link_failure() is called
    net/cxgb4: Don't retrieve stats during recovery
    ...

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "A handful of tooling fixes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf symbols: Load map before using map->map_ip()
    perf tools: Fix traceevent plugin path definitions
    perf symbols: Fix JIT symbol resolution on heap
    perf stat: Fix memory corruption of xyarray when cpumask is used
    perf evsel: Remove duplicate member zeroing after free
    perf tools: Ensure sscanf does not overrun the "mem" field
    perf stat: fix NULL pointer reference bug with event unit
    perf tools: Add support for the xtensa architecture
    perf session: Free cpu_map in perf_session__cpu_bitmap
    perf timechart: Fix wrong SVG height

    Linus Torvalds
     

25 Jan, 2014

1 commit

  • Pull ACPI and power management updates from Rafael Wysocki:
    "As far as the number of commits goes, the top spot belongs to ACPI
    this time with cpufreq in the second position and a handful of PM
    core, PNP and cpuidle updates. They are fixes and cleanups mostly, as
    usual, with a couple of new features in the mix.

    The most visible change is probably that we will create struct
    acpi_device objects (visible in sysfs) for all devices represented in
    the ACPI tables regardless of their status and there will be a new
    sysfs attribute under those objects allowing user space to check that
    status via _STA.

    Consequently, ACPI device eject or generally hot-removal will not
    delete those objects, unless the table containing the corresponding
    namespace nodes is unloaded, which is extremely rare. Also ACPI
    container hotplug will be handled quite a bit differently and cpufreq
    will support CPU boost ("turbo") generically and not only in the
    acpi-cpufreq driver.

    Specifics:

    - ACPI core changes to make it create a struct acpi_device object for
    every device represented in the ACPI tables during all namespace
    scans regardless of the current status of that device. In
    accordance with this, ACPI hotplug operations will not delete those
    objects, unless the underlying ACPI tables go away.

    - On top of the above, new sysfs attribute for ACPI device objects
    allowing user space to check device status by triggering the
    execution of _STA for its ACPI object. From Srinivas Pandruvada.

    - ACPI core hotplug changes reducing code duplication, integrating
    the PCI root hotplug with the core and reworking container hotplug.

    - ACPI core simplifications making it use ACPI_COMPANION() in the
    code "glueing" ACPI device objects to "physical" devices.

    - ACPICA update to upstream version 20131218. This adds support for
    the DBG2 and PCCT tables to ACPICA, fixes some bugs and improves
    debug facilities. From Bob Moore, Lv Zheng and Betty Dall.

    - Init code change to carry out the early ACPI initialization
    earlier. That should allow us to use ACPI during the timekeeping
    initialization and possibly to simplify the EFI initialization too.
    From Chun-Yi Lee.

    - Clenups of the inclusions of ACPI headers in many places all over
    from Lv Zheng and Rashika Kheria (work in progress).

    - New helper for ACPI _DSM execution and rework of the code in
    drivers that uses _DSM to execute it via the new helper. From
    Jiang Liu.

    - New Win8 OSI blacklist entries from Takashi Iwai.

    - Assorted ACPI fixes and cleanups from Al Stone, Emil Goode, Hanjun
    Guo, Lan Tianyu, Masanari Iida, Oliver Neukum, Prarit Bhargava,
    Rashika Kheria, Tang Chen, Zhang Rui.

    - intel_pstate driver updates, including proper Baytrail support,
    from Dirk Brandewie and intel_pstate documentation from Ramkumar
    Ramachandra.

    - Generic CPU boost ("turbo") support for cpufreq from Lukasz
    Majewski.

    - powernow-k6 cpufreq driver fixes from Mikulas Patocka.

    - cpufreq core fixes and cleanups from Viresh Kumar, Jane Li, Mark
    Brown.

    - Assorted cpufreq drivers fixes and cleanups from Anson Huang, John
    Tobias, Paul Bolle, Paul Walmsley, Sachin Kamat, Shawn Guo, Viresh
    Kumar.

    - cpuidle cleanups from Bartlomiej Zolnierkiewicz.

    - Support for hibernation APM events from Bin Shi.

    - Hibernation fix to avoid bringing up nonboot CPUs with ACPI EC
    disabled during thaw transitions from Bjørn Mork.

    - PM core fixes and cleanups from Ben Dooks, Leonardo Potenza, Ulf
    Hansson.

    - PNP subsystem fixes and cleanups from Dmitry Torokhov, Levente
    Kurusa, Rashika Kheria.

    - New tool for profiling system suspend from Todd E Brandt and a
    cpupower tool cleanup from One Thousand Gnomes"

    * tag 'pm+acpi-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (153 commits)
    thermal: exynos: boost: Automatic enable/disable of BOOST feature (at Exynos4412)
    cpufreq: exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ
    Documentation: cpufreq / boost: Update BOOST documentation
    cpufreq: exynos: Extend Exynos cpufreq driver to support boost
    cpufreq / boost: Kconfig: Support for software-managed BOOST
    acpi-cpufreq: Adjust the code to use the common boost attribute
    cpufreq: Add boost frequency support in core
    intel_pstate: Add trace point to report internal state.
    cpufreq: introduce cpufreq_generic_get() routine
    ARM: SA1100: Create dummy clk_get_rate() to avoid build failures
    cpufreq: stats: create sysfs entries when cpufreq_stats is a module
    cpufreq: stats: free table and remove sysfs entry in a single routine
    cpufreq: stats: remove hotplug notifiers
    cpufreq: stats: handle cpufreq_unregister_driver() and suspend/resume properly
    cpufreq: speedstep: remove unused speedstep_get_state
    platform: introduce OF style 'modalias' support for platform bus
    PM / tools: new tool for suspend/resume performance optimization
    ACPI: fix module autoloading for ACPI enumerated devices
    ACPI: add module autoloading support for ACPI enumerated devices
    ACPI: fix create_modalias() return value handling
    ...

    Linus Torvalds
     

24 Jan, 2014

4 commits

  • To help avoid an architecture failing to correctly check kernel/user
    boundaries when handling copy_to_user, copy_from_user, put_user, or
    get_user, perform some simple tests and fail to load if any of them
    behave unexpectedly.

    Specifically, this is to make sure there is a way to notice if things
    like what was fixed in commit 8404663f81d2 ("ARM: 7527/1: uaccess:
    explicitly check __user pointer when !CPU_USE_DOMAINS") ever regresses
    again, for any architecture.

    Additionally, adds new "user" selftest target, which loads this module.

    Signed-off-by: Kees Cook
    Cc: Rusty Russell
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • In map_groups__find_symbol() map->map_ip is used without ensuring the
    map is loaded. Then the address passed to map->map_ip isn't mapped at
    the first time.

    E.g. below code always fails to get a symbol at the first call;

    addr = /* Somewhere in the kernel text */
    symbol_conf.try_vmlinux_path = true;
    symbol__init();
    host_machine = machine__new_host();
    sym = machine__find_kernel_function(host_machine,
    addr, NULL, NULL);
    /* Note that machine__find_kernel_function calls
    map_groups__find_symbol */

    This ensures it by calling map__load before using it in
    map_groups__find_symbol().

    Signed-off-by: Masami Hiramatsu
    Cc: "David A. Long"
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Oleg Nesterov
    Cc: Srikar Dronamraju
    Cc: "Steven Rostedt (Red Hat)"
    Cc: yrl.pp-manager.tt@hitachi.com
    Link: http://lkml.kernel.org/r/20140123022950.7206.17357.stgit@kbuild-fedora.yrl.intra.hitachi.co.jp
    Signed-off-by: Arnaldo Carvalho de Melo

    Masami Hiramatsu
     
  • The plugindir_SQ definition contains $(prefix) which is not needed as
    the $(libdir) definition already contains prefix in it. This leads to
    the path including an extra prefix in it, e.g. /usr/usr/lib64.

    The -DPLUGIN_DIR defintion includes DESTDIR. This is incorrect, as it
    sets the plugin search path to include the value of DESTDIR. DESTDIR is
    a mechanism to install in a non-standard location such as a chroot or an
    RPM build root. In the RPM case, this leads to the search path being
    incorrect after the resulting RPM is installed (or in some cases an RPM
    build failure).

    Remove both of these unnecessary inclusions.

    Signed-off-by: Josh Boyer
    Acked-by: Jiri Olsa
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/r/20140122150147.GK16455@hansolo.jdub.homelinux.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Josh Boyer
     
  • …/acme/linux into perf/urgent

    Pull perf tooling fixes and updates from Arnaldo Carvalho de Melo:

    * Fix JIT symbol resolution on heap (Namhyung Kim)

    * Fix wrong SVG height in 'timechart' (Stanislav Fomichev)

    * Free temp cpu_map in perf_session__cpu_bitmap (Stanislav Fomichev)

    * Fix NULL pointer reference bug with event unit in 'stat' (Stephane Eranian)

    * Fix memory corruption of xyarray when cpumask is used (Stephane Eranian)

    * Ensure sscanf does not overrun the "mem" field (Alan Cox)

    * Add support for the xtensa architecture (Baruch Siach)

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

21 Jan, 2014

13 commits

  • Gaurav reported that perf cannot profile JIT program if it executes the
    code on heap. This was because current map__new() only handle JIT on
    anon mappings - extends it to handle no_dso (heap, stack) case too.

    This patch assumes JIT profiling only provides dynamic function symbols
    so check the mapping type to distinguish the case. It'd provide no
    symbols for data mapping - if we need to support symbols on data
    mappings later it should be changed.

    Reported-by: Gaurav Jain
    Signed-off-by: Namhyung Kim
    Tested-by: Gaurav Jain
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Gaurav Jain
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1389836971-3549-1-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • Pull char/misc driver patches from Greg KH:
    "Here's the big char/misc driver patches for 3.14-rc1.

    Lots of little things, and a new "big" driver, genwqe. Full details
    are in the shortlog"

    * tag 'char-misc-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (90 commits)
    mei: limit the number of consecutive resets
    mei: revamp mei reset state machine
    drivers/char: don't use module_init in non-modular ttyprintk.c
    VMCI: fix error handling path when registering guest driver
    extcon: gpio: Add power resume support
    Documentation: HOWTO: Updates on subsystem trees, patchwork, -next (vs. -mm) in ko_KR
    Documentation: HOWTO: update for 2.6.x -> 3.x versioning in ko_KR
    Documentation: HOWTO: update stable address in ko_KR
    Documentation: HOWTO: update LXR web link in ko_KR
    char: nwbutton: open-code interruptible_sleep_on
    mei: fix syntax in comments and debug output
    mei: nfc: mei_nfc_free has to be called under lock
    mei: use hbm idle state to prevent spurious resets
    mei: do not run reset flow from the interrupt thread
    misc: genwqe: fix return value check in genwqe_device_create()
    GenWQE: Fix warnings for sparc
    GenWQE: Fix compile problems for Alpha
    Documentation/misc-devices/mei/mei-amt-version.c: remove unneeded call of mei_deinit()
    GenWQE: Rework return code for flash-update ioctl
    sgi-xp: open-code interruptible_sleep_on_timeout
    ...

    Linus Torvalds
     
  • This patch fixes a memory corruption problem with the xyarray when the
    evsel fds get closed at the end of the run_perf_stat() call.

    It could be triggered with:

    # perf stat -a -e power/energy-cores/ ls

    When cpumask are used by events (.e.g, RAPL or uncores) then the evsel
    fds are allocated based on the actual number of CPUs monitored. That
    number can be smaller than the total number of CPUs on the system.

    The problem arises at the end by perf stat closes the fds twice. When
    fds are closed, their entry in the xyarray are set to -1.

    The first close() on the evsel is made from __run_perf_stat() and it
    uses the actual number of CPUS for the event which is how the xyarray
    was allocated for.

    The second is from perf_evlist_close() but that one is on the total
    number of CPUs in the system, so it assume the xyarray was allocated to
    cover it. However it was not, and some writes corrupt memory.

    The fix is in perf_evlist_close() is to first try with the evsel->cpus
    if present, if not use the evlist->cpus. That fixes the problem.

    Signed-off-by: Stephane Eranian
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1389972846-6566-3-git-send-email-eranian@google.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Stephane Eranian
     
  • No need to set evsel->fd to NULL after calling perf_evsel__free_fd(), as
    this method already does that.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/n/tip-wu6kul8fpapr8iyqm685ewtf@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Stephane Eranian
     
  • Make the parsing robust.

    (perf has some other assumptions that BUFSIZE
    Cc: Alan Cox
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/n/tip-g2uoiwbrpiimb63rx32qv8ne@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Alan Cox
     
  • This patch fixes a problem with the handling of the newly introduced
    optional event unit. The following cmdline caused a segfault:

    $ perf stat -e cpu/event-0x3c/ ls

    This patch fixes the problem with the default setting for alias->unit
    which was eventually causing the segfault.

    Signed-off-by: Stephane Eranian
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1389972846-6566-2-git-send-email-eranian@google.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Stephane Eranian
     
  • Tested using kernel tracepoints on a QEMU simulated environment.

    Kernel support for perf depends on the patch "xtensa: enable
    HAVE_PERF_EVENTS", which is scheduled for v3.14.

    Hardware performance counters are not supported under xtensa yet.

    Acked-by: Ingo Molnar
    Acked-by: Max Filippov
    Cc: Ingo Molnar
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: linux-xtensa@linux-xtensa.org
    Link: http://lkml.kernel.org/r/aafcdb22f04e2d3188d2938528939481be56b649.1389608855.git.baruch@tkos.co.il
    Signed-off-by: Baruch Siach
    Signed-off-by: Arnaldo Carvalho de Melo

    Baruch Siach
     
  • This method uses a temporary struct cpu_map to figure out the cpus
    present in the received cpu list in string form, but it failed to free
    it after returning. Fix it.

    Signed-off-by: Stanislav Fomichev
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1390217980-22424-3-git-send-email-stfomichev@yandex-team.ru
    [ Use goto + err = -1 to do the delete just once, in the normal exit path ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Stanislav Fomichev
     
  • If we call perf timechart with -p 0 arguments, it means we don't want
    any tasks related data. It works, but space for tasks data is reserved
    in the generated SVG. Remove this unused empty space via passing 0 as
    count to the open_svg.

    Signed-off-by: Stanislav Fomichev
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1390217980-22424-2-git-send-email-stfomichev@yandex-team.ru
    Signed-off-by: Arnaldo Carvalho de Melo

    Stanislav Fomichev
     
  • Pull perf updates from Ingo Molnar:
    "Kernel side changes:

    - Add Intel RAPL energy counter support (Stephane Eranian)
    - Clean up uprobes (Oleg Nesterov)
    - Optimize ring-buffer writes (Peter Zijlstra)

    Tooling side changes, user visible:

    - 'perf diff':
    - Add column colouring improvements (Ramkumar Ramachandra)

    - 'perf kvm':
    - Add guest related improvements, including allowing to specify a
    directory with guest specific /proc information (Dongsheng Yang)
    - Add shell completion support (Ramkumar Ramachandra)
    - Add '-v' option (Dongsheng Yang)
    - Support --guestmount (Dongsheng Yang)

    - 'perf probe':
    - Support showing source code, asking for variables to be collected
    at probe time and other 'perf probe' operations that use DWARF
    information.

    This supports only binaries with debugging information at this
    time, detached debuginfo (aka debuginfo packages) support should
    come in later patches (Masami Hiramatsu)

    - 'perf record':
    - Rename --no-delay option to --no-buffering, better reflecting its
    purpose and freeing up '--delay' to take the place of
    '--initial-delay', so that 'record' and 'stat' are consistent
    (Arnaldo Carvalho de Melo)
    - Default the -t/--thread option to no inheritance (Adrian Hunter)
    - Make per-cpu mmaps the default (Adrian Hunter)

    - 'perf report':
    - Improve callchain processing performance (Frederic Weisbecker)
    - Retain bfd reference to lookup source line numbers, greatly
    optimizing, among other use cases, 'perf report -s srcline'
    (Adrian Hunter)
    - Improve callchain processing performance even more (Namhyung Kim)
    - Add a perf.data file header window in the 'perf report' TUI,
    associated with the 'i' hotkey, providing a counterpart to the
    --header option in the stdio UI (Namhyung Kim)

    - 'perf script':
    - Add an option in 'perf script' to print the source line number
    (Adrian Hunter)
    - Add --header/--header-only options to 'script' and 'report', the
    default is not tho show the header info, but as this has been the
    default for some time, leave a single line explaining how to
    obtain that information (Jiri Olsa)
    - Add options to show comm, fork, exit and mmap PERF_RECORD_ events
    (Namhyung Kim)
    - Print callchains and symbols if they exist (David Ahern)

    - 'perf timechart'
    - Add backtrace support to CPU info
    - Print pid along the name
    - Add support for CPU topology
    - Add new option --highlight'ing threads, be it by name or, if a
    numeric value is provided, that run more than given duration
    (Stanislav Fomichev)

    - 'perf top':
    - Make 'perf top -g' refer to callchains, for consistency with
    other tools (David Ahern)

    - 'perf trace':
    - Handle old kernels where the "raw_syscalls" tracepoints were
    called plain "syscalls" (David Ahern)
    - Remove thread summary coloring, by Pekka Enberg.
    - Honour -m option in 'trace', the tool was offering the option to
    set the mmap size, but wasn't using it when doing the actual mmap
    on the events file descriptors (Jiri Olsa)

    - generic:
    - Backport libtraceevent plugin support (trace-cmd repository, with
    plugins for jbd2, hrtimer, kmem, kvm, mac80211, sched_switch,
    function, xen, scsi, cfg80211 (Jiri Olsa)
    - Print session information only if --stdio is given (Namhyung Kim)

    Tooling side changes, developer visible (plumbing):

    - Improve 'perf probe' exit path, release resources (Masami
    Hiramatsu)
    - Improve libtraceevent plugins exit path, allowing the registering
    of an unregister handler to be called at exit time (Namhyung Kim)
    - Add an alias to the build test makefile (make -C tools/perf
    build-test) (Namhyung Kim)
    - Get rid of die() and friends (good riddance!) in libtraceevent
    (Namhyung Kim)
    - Fix cross build problems related to pkgconfig and CROSS_COMPILE not
    being propagated to the feature tests, leading to features being
    tested in the host and then being enabled on the target (Mark
    Rutland)
    - Improve forked workload error reporting by sending the errno in the
    signal data queueing integer field, using sigqueue and by doing the
    signal setup in the evlist methods, removing open coded equivalents
    in various tools (Arnaldo Carvalho de Melo)
    - Do more auto exit cleanup chores in the 'evlist' destructor, so
    that the tools don't have to all do that sequence (Arnaldo Carvalho
    de Melo)
    - Pack 'struct perf_session_env' and 'struct trace' (Arnaldo Carvalho
    de Melo)
    - Add test for building detached source tarballs (Arnaldo Carvalho de
    Melo)
    - Move some header files (tools/perf/ to tools/include/ to make them
    available to other tools/ dwelling codebases (Namhyung Kim)
    - Move logic to warn about kptr_restrict'ed kernels to separate
    function in 'report' (Arnaldo Carvalho de Melo)
    - Move hist browser selection code to separate function (Arnaldo
    Carvalho de Melo)
    - Move histogram entries collapsing to separate function (Arnaldo
    Carvalho de Melo)
    - Introduce evlist__for_each() & friends (Arnaldo Carvalho de Melo)
    - Automate setup of FEATURE_CHECK_(C|LD)FLAGS-all variables (Jiri
    Olsa)
    - Move arch setup into seprate Makefile (Jiri Olsa)
    - Make libtraceevent install target quieter (Jiri Olsa)
    - Make tests/make output more compact (Jiri Olsa)
    - Ignore generated files in feature-checks (Chunwei Chen)
    - Introduce pevent_filter_strerror() in libtraceevent, similar in
    purpose to libc's strerror() function (Namhyung Kim)
    - Use perf_data_file methods to write output file in 'record' and
    'inject' (Jiri Olsa)
    - Use pr_*() functions where applicable in 'report' (Namhyumg Kim)
    - Add 'machine' 'addr_location' struct to have full picture (machine,
    thread, map, symbol, addr) for a (partially) resolved address,
    reducing function signatures (Arnaldo Carvalho de Melo)
    - Reduce code duplication in the histogram entry creation/insertion
    (Arnaldo Carvalho de Melo)
    - Auto allocate annotation histogram data structures (Arnaldo
    Carvalho de Melo)
    - No need to test against NULL before calling free, also set freed
    memory in struct pointers to NULL, to help fixing use after free
    bugs (Arnaldo Carvalho de Melo)
    - Rename some struct DSO binary_type related members and methods, to
    clarify its purpose and need for differentiation (symtab_type, ie
    one is about the files .text, CFI, etc, i.e. its binary contents,
    and the other is about where the symbol table came from (Arnaldo
    Carvalho de Melo)
    - Convert to new topic libraries, starting with an API one (sysfs,
    debugfs, etc), renaming liblk in the process (Borislav Petkov)
    - Get rid of some more panic() like error handling in libtraceevent.
    (Namhyung Kim)
    - Get rid of panic() like calls in libtraceevent (Namyung Kim)
    - Start carving out symbol parsing routines (perf, just moving
    routines to topic files in tools/lib/symbol/, tools that want to
    use it need to integrate it directly, ie no
    tools/lib/symbol/Makefile is provided (Arnaldo Carvalho de Melo)
    - Assorted refactoring patches, moving code around and adding utility
    evlist methods that will be used in the IPT patchset (Adrian
    Hunter)
    - Assorted mmap_pages handling fixes (Adrian Hunter)
    - Several man pages typo fixes (Dongsheng Yang)
    - Get rid of several die() calls in libtraceevent (Namhyung Kim)
    - Use basename() in a more robust way, to avoid problems related to
    different system library implementations for that function
    (Stephane Eranian)
    - Remove open coded management of short_name_allocated member (Adrian
    Hunter)
    - Several cleanups in the "dso" methods, constifying some parameters
    and renaming some fields to clarify its purpose (Arnaldo Carvalho
    de Melo)
    - Add per-feature check flags, fixing libunwind related build
    problems on some architectures (Jean Pihet)
    - Do not disable source line lookup just because of one failure.
    (Adrian Hunter)
    - Several 'perf kvm' man page corrections (Dongsheng Yang)
    - Correct the message in feature-libnuma checking, swowing the right
    devel package names for various distros (Dongsheng Yang)
    - Polish 'readn()' function and introduce its counterpart,
    'writen()' (Jiri Olsa)
    - Start moving timechart state from global variables to a 'perf_tool'
    derived 'timechart' struct (Arnaldo Carvalho de Melo)

    ... and lots of fixes and improvements I forgot to list"

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (282 commits)
    perf tools: Remove unnecessary callchain cursor state restore on unmatch
    perf callchain: Spare double comparison of callchain first entry
    perf tools: Do proper comm override error handling
    perf symbols: Export elf_section_by_name and reuse
    perf probe: Release all dynamically allocated parameters
    perf probe: Release allocated probe_trace_event if failed
    perf tools: Add 'build-test' make target
    tools lib traceevent: Unregister handler when xen plugin is unloaded
    tools lib traceevent: Unregister handler when scsi plugin is unloaded
    tools lib traceevent: Unregister handler when jbd2 plugin is is unloaded
    tools lib traceevent: Unregister handler when cfg80211 plugin is unloaded
    tools lib traceevent: Unregister handler when mac80211 plugin is unloaded
    tools lib traceevent: Unregister handler when sched_switch plugin is unloaded
    tools lib traceevent: Unregister handler when kvm plugin is unloaded
    tools lib traceevent: Unregister handler when kmem plugin is unloaded
    tools lib traceevent: Unregister handler when hrtimer plugin is unloaded
    tools lib traceevent: Unregister handler when function plugin is unloaded
    tools lib traceevent: Add pevent_unregister_print_function()
    tools lib traceevent: Add pevent_unregister_event_handler()
    tools lib traceevent: fix pointer-integer size mismatch
    ...

    Linus Torvalds
     
  • Pull RCU updates from Ingo Molnar:
    - add RCU torture scripts/tooling
    - static analysis improvements
    - update RCU documentation
    - miscellaneous fixes

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (52 commits)
    rcu: Remove "extern" from function declarations in kernel/rcu/rcu.h
    rcu: Remove "extern" from function declarations in include/linux/*rcu*.h
    rcu/torture: Dynamically allocate SRCU output buffer to avoid overflow
    rcu: Don't activate RCU core on NO_HZ_FULL CPUs
    rcu: Warn on allegedly impossible rcu_read_unlock_special() from irq
    rcu: Add an RCU_INITIALIZER for global RCU-protected pointers
    rcu: Make rcu_assign_pointer's assignment volatile and type-safe
    bonding: Use RCU_INIT_POINTER() for better overhead and for sparse
    rcu: Add comment on evaluate-once properties of rcu_assign_pointer().
    rcu: Provide better diagnostics for blocking in RCU callback functions
    rcu: Improve SRCU's grace-period comments
    rcu: Fix CONFIG_RCU_FANOUT_EXACT for odd fanout/leaf values
    rcu: Fix coccinelle warnings
    rcutorture: Stop tracking FSF's postal address
    rcutorture: Move checkarg to functions.sh
    rcutorture: Flag errors and warnings with color coding
    rcutorture: Record results from repeated runs of the same test scenario
    rcutorture: Test summary at end of run with less chattiness
    rcutorture: Update comment in kvm.sh listing typical RCU trace events
    rcutorture: Add tracing-enabled version of TREE08
    ...

    Linus Torvalds
     
  • Pull core locking changes from Ingo Molnar:
    - futex performance increases: larger hashes, smarter wakeups
    - mutex debugging improvements
    - lots of SMP ordering documentation updates
    - introduce the smp_load_acquire(), smp_store_release() primitives.
    (There are WIP patches that make use of them - not yet merged)
    - lockdep micro-optimizations
    - lockdep improvement: better cover IRQ contexts
    - liblockdep at last. We'll continue to monitor how useful this is

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
    futexes: Fix futex_hashsize initialization
    arch: Re-sort some Kbuild files to hopefully help avoid some conflicts
    futexes: Avoid taking the hb->lock if there's nothing to wake up
    futexes: Document multiprocessor ordering guarantees
    futexes: Increase hash table size for better performance
    futexes: Clean up various details
    arch: Introduce smp_load_acquire(), smp_store_release()
    arch: Clean up asm/barrier.h implementations using asm-generic/barrier.h
    arch: Move smp_mb__{before,after}_atomic_{inc,dec}.h into asm/atomic.h
    locking/doc: Rename LOCK/UNLOCK to ACQUIRE/RELEASE
    mutexes: Give more informative mutex warning in the !lock->owner case
    powerpc: Full barrier for smp_mb__after_unlock_lock()
    rcu: Apply smp_mb__after_unlock_lock() to preserve grace periods
    Documentation/memory-barriers.txt: Downgrade UNLOCK+BLOCK
    locking: Add an smp_mb__after_unlock_lock() for UNLOCK+BLOCK barrier
    Documentation/memory-barriers.txt: Document ACCESS_ONCE()
    Documentation/memory-barriers.txt: Prohibit speculative writes
    Documentation/memory-barriers.txt: Add long atomic examples to memory-barriers.txt
    Documentation/memory-barriers.txt: Add needed ACCESS_ONCE() calls to memory-barriers.txt
    Revert "smp/cpumask: Make CONFIG_CPUMASK_OFFSTACK=y usable without debug dependency"
    ...

    Linus Torvalds
     
  • Pull ktest updates from Steven Rostedt:
    "Here's some basic updates to ktest.pl. They include:

    - add config to modify the signal to terminate console
    - update to documentation (missing some config options)
    - add KERNEL_VERSION variable to use for other configs
    - add '=~' to let configs eval other configs
    - add BISECT_TRIES to run multiple tests per git bisect good"

    * tag 'ktest-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest:
    ktest: Add BISECT_TRIES to bisect test
    ktest: Add eval '=~' command to modify variables in config file
    ktest: Add special variable ${KERNEL_VERSION}
    ktest: Add documentation of CLOSE_CONSOLE_SIGNAL
    ktest: Make the signal to terminate the console configurable

    Linus Torvalds
     

19 Jan, 2014

3 commits