1. 13 Dec, 2016 36 commits
  2. 12 Dec, 2016 4 commits
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · df5f0f0a
      Linus Torvalds authored
      Pull x86 RAS updates from Ingo Molnar:
       "The main changes in this development cycle were:
      
         - more AMD northbridge support work, mostly in preparation for Fam17h
           CPUs (Yazen Ghannam, Borislav Petkov)
      
         - cleanups/refactorings and fixes (Borislav Petkov, Tony Luck,
           Yinghai Lu)"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Include the PPIN in MCE records when available
        x86/mce/AMD: Add system physical address translation for AMD Fam17h
        x86/amd_nb: Add SMN and Indirect Data Fabric access for AMD Fam17h
        x86/amd_nb: Add Fam17h Data Fabric as "Northbridge"
        x86/amd_nb: Make all exports EXPORT_SYMBOL_GPL
        x86/amd_nb: Make amd_northbridges internal to amd_nb.c
        x86/mce/AMD: Reset Threshold Limit after logging error
        x86/mce/AMD: Fix HWID_MCATYPE calculation by grouping arguments
        x86/MCE: Correct TSC timestamping of error records
        x86/RAS: Hide SMCA bank names
        x86/RAS: Rename smca_bank_names to smca_names
        x86/RAS: Simplify SMCA HWID descriptor struct
        x86/RAS: Simplify SMCA bank descriptor struct
        x86/MCE: Dump MCE to dmesg if no consumers
        x86/RAS: Add TSC timestamp to the injected MCE
        x86/MCE: Do not look at panic_on_oops in the severity grading
      df5f0f0a
    • Linus Torvalds's avatar
      Merge branch 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · cbaa1576
      Linus Torvalds authored
      Pull hotplug API fix from Ingo Molnar:
       "Late breaking fix from the v4.9 cycle: fix a hotplug register/
        unregister notifier API asymmetry bug that can cause kernel warnings
        (and worse) with certain Kconfig combinations"
      
      * 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        hotplug: Make register and unregister notifier API symmetric
      cbaa1576
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 92c020d0
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
       "The main scheduler changes in this cycle were:
      
         - support Intel Turbo Boost Max Technology 3.0 (TBM3) by introducig a
           notion of 'better cores', which the scheduler will prefer to
           schedule single threaded workloads on. (Tim Chen, Srinivas
           Pandruvada)
      
         - enhance the handling of asymmetric capacity CPUs further (Morten
           Rasmussen)
      
         - improve/fix load handling when moving tasks between task groups
           (Vincent Guittot)
      
         - simplify and clean up the cputime code (Stanislaw Gruszka)
      
         - improve mass fork()ed task spread a.k.a. hackbench speedup (Vincent
           Guittot)
      
         - make struct kthread kmalloc()ed and related fixes (Oleg Nesterov)
      
         - add uaccess atomicity debugging (when using access_ok() in the
           wrong context), under CONFIG_DEBUG_ATOMIC_SLEEP=y (Peter Zijlstra)
      
         - implement various fixes, cleanups and other enhancements (Daniel
           Bristot de Oliveira, Martin Schwidefsky, Rafael J. Wysocki)"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
        sched/core: Use load_avg for selecting idlest group
        sched/core: Fix find_idlest_group() for fork
        kthread: Don't abuse kthread_create_on_cpu() in __kthread_create_worker()
        kthread: Don't use to_live_kthread() in kthread_[un]park()
        kthread: Don't use to_live_kthread() in kthread_stop()
        Revert "kthread: Pin the stack via try_get_task_stack()/put_task_stack() in to_live_kthread() function"
        kthread: Make struct kthread kmalloc'ed
        x86/uaccess, sched/preempt: Verify access_ok() context
        sched/x86: Make CONFIG_SCHED_MC_PRIO=y easier to enable
        sched/x86: Change CONFIG_SCHED_ITMT to CONFIG_SCHED_MC_PRIO
        x86/sched: Use #include <linux/mutex.h> instead of #include <asm/mutex.h>
        cpufreq/intel_pstate: Use CPPC to get max performance
        acpi/bus: Set _OSC for diverse core support
        acpi/bus: Enable HWP CPPC objects
        x86/sched: Add SD_ASYM_PACKING flags to x86 ITMT CPU
        x86/sysctl: Add sysctl for ITMT scheduling feature
        x86: Enable Intel Turbo Boost Max Technology 3.0
        x86/topology: Define x86's arch_update_cpu_topology
        sched: Extend scheduler's asym packing
        sched/fair: Clean up the tunable parameter definitions
        ...
      92c020d0
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · bca13ce4
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "This update is pretty big and almost exclusively includes tooling
        changes, because v4.9's LTS status forced to completion most of the
        pending kernel side hardware enablement work and because we tried to
        freeze core perf work a bit to give a time window for the fuzzing
        efforts.
      
        The diff is large mostly due to the JSON hardware event tables added
        for Intel and Power8 CPUs. This was a popular feature request from
        people working close to hardware and from the HPC community.
      
        Tree size is big because this added the CPU event tables for over a
        decade of Intel CPUs. Future changes for a CPU vendor alrady support
        should be much smaller, as events for new models are added. The new
        events are listed in 'perf list', for the CPU model the tool is
        running on. If you find an interesting event it can be used as-is:
      
            $ perf stat -a -e l2_lines_out.pf_clean sleep 1
      
            Performance counter stats for 'system wide':
      
                  7,860,403      l2_lines_out.pf_clean
      
                 1.000624918 seconds time elapsed
      
        The event lists can be searched the usual 'perf list' fashion for
        (case insensitive) substrings as well:
      
            $ perf list l2_lines_out
      
            List of pre-defined events (to be used in -e):
      
            cache:
              l2_lines_out.demand_clean
                   [Clean L2 cache lines evicted by demand]
              l2_lines_out.demand_dirty
                   [Dirty L2 cache lines evicted by demand]
              l2_lines_out.dirty_all
                   [Dirty L2 cache lines filling the L2]
              l2_lines_out.pf_clean
                   [Clean L2 cache lines evicted by L2 prefetch]
              l2_lines_out.pf_dirty
                   [Dirty L2 cache lines evicted by L2 prefetch]
      
        etc.
      
        There's a few high level categories as well that can be listed:
        'cache', 'floating point', 'frontend', 'memory', 'pipeline', 'virtual
        memory'.
      
        Existing generic events and workflows should work as-is.
      
        The only kernel side change is a late breaking fix for an older
        regression, related to Intel BTS, LBR and PT feature interaction.
      
        On the tooling side there are three new tools / major features:
      
         - The new 'perf c2c' tool provides means for Shared Data C2C/HITM
           analysis.
      
           This allows you to track down cacheline contention. The tool is
           based on x86's load latency and precise store facility events
           provided by Intel CPUs.
      
           It was tested by Joe Mario and has proven to be useful, finding
           some cacheline contentions. Joe also wrote a blog about c2c tool
           with examples:
      
              https://joemario.github.io/blog/2016/09/01/c2c-blog/
      
           excerpt of the content on this site:
      
               At a high level, “perf c2c” will show you:
      
                * The cachelines where false sharing was detected.
                * The readers and writers to those cachelines, and the offsets where those accesses occurred.
                * The pid, tid, instruction addr, function name, binary object name for those readers and writers.
                * The source file and line number for each reader and writer.
                * The average load latency for the loads to those cachelines.
                * Which numa nodes the samples a cacheline came from and which CPUs were involved.
      
               Using perf c2c is similar to using the Linux perf tool today.
               First collect data with “perf c2c record”, then generate a
               report output with “perf c2c report”
      
           There one finds extensive details on using the tool, with tips on
           reducing the volume of samples while still capturing enough to do
           its job. (Dick Fowles, Joe Mario, Don Zickus, Jiri Olsa)
      
         - The new 'perf sched timehist' tool provides tailored analysis of
           scheduling events.
      
           Example usage:
      
                perf sched record -- sleep 1
                perf sched timehist
      
           By default it shows the individual schedule events, including the
           wait time (time between sched-out and next sched-in events for the
           task), the task scheduling delay (time between wakeup and actually
           running) and run time for the task:
      
                  time    cpu  task name         wait time  sch delay  run time
                               [tid/pid]            (msec)     (msec)    (msec)
              -------- ------  ----------------  ---------  ---------  --------
              1.874569 [0011]  gcc[31949]            0.014      0.000     1.148
              1.874591 [0010]  gcc[31951]            0.000      0.000     0.024
              1.874603 [0010]  migration/10[59]      3.350      0.004     0.011
              1.874604 [0011]  <idle>                1.148      0.000     0.035
              1.874723 [0005]  <idle>                0.016      0.000     1.383
              1.874746 [0005]  gcc[31949]            0.153      0.078     0.022
            ...
      
           Times are in msec.usec. (David Ahern, Namhyung Kim)
      
         - Add CPU vendor hardware event tables:
      
           Add JSON files with vendor event naming for Intel and Power8
           processors, allowing users of tools like oprofile to keep using the
           event names they are used to, as well as people reading vendor
           documentation, where such naming is used. (Andi Kleen, Sukadev
           Bhattiprolu)
      
           You should see all the new events with 'perf list' and you should
           be able to search them, for example 'perf list miss' will list all
           the myriads of miss events.
      
        Other tooling features added were:
      
         - Cross-arch annotation support:
      
           o Improve ARM support in the annotation code, affecting 'perf
             annotate', 'perf report' and live annotation in 'perf top' (Kim
             Phillips)
      
           o Initial support for PowerPC in the annotation code (Ravi
             Bangoria)
      
           o Support AArch64 in the 'annotate' code, native/local and
             cross-arch/remote (Kim Phillips)
      
         - Allow considering just events in a given time interval, via the
           '--time start.s.ms,end.s.ms' command line, added to 'perf kmem',
           'perf report', 'perf sched timehist' and 'perf script' (David
           Ahern)
      
         - Add option to stop printing a callchain at one of a given group of
           symbol names (David Ahern)
      
         - Track memory freed in 'perf kmem stat' (David Ahern)
      
         - Allow querying and setting .perfconfig variables (Taeung Song)
      
         - Show branch information in callchains (predicted, TSX aborts, loop
           iteractions, etc) (Jin Yao)
      
         - Dynamicly change verbosity level by pressing 'V' in the 'perf
           top/report' hists TUI browser (Alexis Berlemont)
      
         - Implement 'perf trace --delay' in the same fashion as in 'perf
           record --delay', to skip sampling workload initialization events
           (Alexis Berlemont)
      
         - Make vendor named events case insensitive in 'perf list', i.e.
           'perf list LONGEST_LAT' works just the same as 'perf list
           longest_lat' (Andi Kleen)
      
         - Add unwinding support for jitdump (Stefano Sanfilippo)
      
        Tooling infrastructure changes:
      
         - Support linking perf with clang and LLVM libraries, initially
           statically, but this limitation will be lifted and shared
           libraries, when available, will be preferred to the static build,
           that should, as with other features, be enabled explicitly (Wang
           Nan)
      
         - Add initial support (and perf test entry) for tooling hooks,
           starting with 'record_start' and 'record_end', that will have as
           its initial user the eBPF infrastructure, where perf_ prefixed
           functions will be JITed and run when such hooks are called (Wang
           Nan)
      
         - Implement assorted libbpf improvements (Wang Nan)"
      
        ... and lots of other changes, features, cleanups and refactorings I
        did not list, see the shortlog and the git log for details"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (220 commits)
        perf/x86: Fix exclusion of BTS and LBR for Goldmont
        perf tools: Explicitly document that --children is enabled by default
        perf sched timehist: Cleanup idle_max_cpu handling
        perf sched timehist: Handle zero sample->tid properly
        perf callchain: Introduce callchain_cursor__copy()
        perf sched: Cleanup option processing
        perf sched timehist: Improve error message when analyzing wrong file
        perf tools: Move perf build related variables under non fixdep leg
        perf tools: Force fixdep compilation at the start of the build
        perf tools: Move PERF-VERSION-FILE target into rules area
        perf build: Check LLVM version in feature check
        perf annotate: Show raw form for jump instruction with indirect target
        perf tools: Add non config targets
        perf tools: Cleanup build directory before each test
        perf tools: Move python/perf.so target into rules area
        perf tools: Move install-gtk target into rules area
        tools build: Move tabs to spaces where suitable
        tools build: Make the .cmd file more readable
        perf clang: Compile BPF script using builtin clang support
        perf clang: Support compile IR to BPF object and add testcase
        ...
      bca13ce4