1. 04 Oct, 2016 23 commits
  2. 03 Oct, 2016 17 commits
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3ef0a61a
      Linus Torvalds authored
      Pull x86 boot updates from Ingo Molnar:
       "The changes in this cycle were:
      
         - Save e820 table RAM footprint on larger kernel configurations.
           (Denys Vlasenko)
      
         - pmem related fixes (Dan Williams)
      
         - theoretical e820 boundary condition fix (Wei Yang)"
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Fix kdump, cleanup aborted E820_PRAM max_pfn manipulation
        x86/e820: Use much less memory for e820/e820_saved, save up to 120k
        x86/e820: Prepare e280 code for switch to dynamic storage
        x86/e820: Mark some static functions __init
        x86/e820: Fix very large 'size' handling boundary condition
      3ef0a61a
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1a4a2bc4
      Linus Torvalds authored
      Pull low-level x86 updates from Ingo Molnar:
       "In this cycle this topic tree has become one of those 'super topics'
        that accumulated a lot of changes:
      
         - Add CONFIG_VMAP_STACK=y support to the core kernel and enable it on
           x86 - preceded by an array of changes. v4.8 saw preparatory changes
           in this area already - this is the rest of the work. Includes the
           thread stack caching performance optimization. (Andy Lutomirski)
      
         - switch_to() cleanups and all around enhancements. (Brian Gerst)
      
         - A large number of dumpstack infrastructure enhancements and an
           unwinder abstraction. The secret long term plan is safe(r) live
           patching plus maybe another attempt at debuginfo based unwinding -
           but all these current bits are standalone enhancements in a frame
           pointer based debug environment as well. (Josh Poimboeuf)
      
         - More __ro_after_init and const annotations. (Kees Cook)
      
         - Enable KASLR for the vmemmap memory region. (Thomas Garnier)"
      
      [ The virtually mapped stack changes are pretty fundamental, and not
        x86-specific per se, even if they are only used on x86 right now. ]
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (70 commits)
        x86/asm: Get rid of __read_cr4_safe()
        thread_info: Use unsigned long for flags
        x86/alternatives: Add stack frame dependency to alternative_call_2()
        x86/dumpstack: Fix show_stack() task pointer regression
        x86/dumpstack: Remove dump_trace() and related callbacks
        x86/dumpstack: Convert show_trace_log_lvl() to use the new unwinder
        oprofile/x86: Convert x86_backtrace() to use the new unwinder
        x86/stacktrace: Convert save_stack_trace_*() to use the new unwinder
        perf/x86: Convert perf_callchain_kernel() to use the new unwinder
        x86/unwind: Add new unwind interface and implementations
        x86/dumpstack: Remove NULL task pointer convention
        fork: Optimize task creation by caching two thread stacks per CPU if CONFIG_VMAP_STACK=y
        sched/core: Free the stack early if CONFIG_THREAD_INFO_IN_TASK
        lib/syscall: Pin the task stack in collect_syscall()
        x86/process: Pin the target stack in get_wchan()
        x86/dumpstack: Pin the target stack when dumping it
        kthread: Pin the stack via try_get_task_stack()/put_task_stack() in to_live_kthread() function
        sched/core: Add try_get_task_stack() and put_task_stack()
        x86/entry/64: Fix a minor comment rebase error
        iommu/amd: Don't put completion-wait semaphore on stack
        ...
      1a4a2bc4
    • Andi Kleen's avatar
      perf tools: Support CPU id matching for x86 v2 · f33d1227
      Andi Kleen authored
      Implement the code to match CPU types to mapfile types for x86 based on
      CPUID. This extends an existing similar function, but changes it to use
      the x86 mapfile cpu description.  This allows to resolve event lists
      generated by jevents.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lkml.kernel.org/r/1473978296-20712-6-git-send-email-sukadev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f33d1227
    • Sukadev Bhattiprolu's avatar
      perf powerpc: Support CPU ID matching for Powerpc · ce88f27c
      Sukadev Bhattiprolu authored
      Implement code that returns the generic CPU ID string for Powerpc.  This
      will be used to identify the specific table of PMU events to
      parse/compare user specified events against.
      Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lkml.kernel.org/r/1473978296-20712-5-git-send-email-sukadev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ce88f27c
    • Sukadev Bhattiprolu's avatar
      perf pmu: Use pmu_events table to create aliases · 933f82ff
      Sukadev Bhattiprolu authored
      At run time (when 'perf' is starting up), locate the specific table of
      PMU events that corresponds to the current CPU. Using that table, create
      aliases for the each of the PMU events in the CPU. The use these aliases
      to parse the user specified perf event.
      
      In short this would allow the user to specify events using their aliases
      rather than raw event codes.
      
      Based on input and some earlier patches from Andi Kleen, Jiri Olsa.
      Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lkml.kernel.org/r/1473978296-20712-4-git-send-email-sukadev@linux.vnet.ibm.com
      [ Make pmu_add_cpu_aliases() return void, since it was returning just '0' and
        furthermore, even that was being discarded via an explicit (void) cast ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      933f82ff
    • Andi Kleen's avatar
      perf jevents: Program to convert JSON file · 80eeb67f
      Andi Kleen authored
      This is a modified version of an earlier patch by Andi Kleen.
      
      We expect architectures to create JSON files describing the performance
      monitoring (PMU) events that each CPU model/family of the architecture
      supports.
      
      Following is an example of the JSON file entry for an x86 event:
      
          	[
          	...
          	{
          	"EventCode": "0x00",
          	"UMask": "0x01",
          	"EventName": "INST_RETIRED.ANY",
          	"BriefDescription": "Instructions retired from execution.",
          	"PublicDescription": "Instructions retired from execution.",
          	"Counter": "Fixed counter 1",
          	"CounterHTOff": "Fixed counter 1",
          	"SampleAfterValue": "2000003",
          	"SampleAfterValue": "2000003",
          	"MSRIndex": "0",
          	"MSRValue": "0",
          	"TakenAlone": "0",
          	"CounterMask": "0",
          	"Invert": "0",
          	"AnyThread": "0",
          	"EdgeDetect": "0",
          	"PEBS": "0",
          	"PRECISE_STORE": "0",
          	"Errata": "null",
          	"Offcore": "0"
          	},
          	...
      
          	]
      
      All the PMU events supported by a CPU model/family must be grouped into
      "topics" such as "Pipelining", "Floating-point", "Virtual-memory" etc.
      
      All events belonging to a topic must be placed in a separate JSON file
      (eg: "Pipelining.json") and all the topic JSON files for a CPU model must
      be in a separate directory.
      
      	Eg: for the CPU model "Silvermont_core":
      
          	$ ls tools/perf/pmu-events/arch/x86/Silvermont_core
          	Floating-point.json
          	Memory.json
          	Other.json
          	Pipelining.json
          	Virtualmemory.json
      
      Finally, to allow multiple CPU models to share a single set of JSON files,
      architectures must provide a mapping between a model and its set of events:
      
          	$ grep Silvermont tools/perf/pmu-events/arch/x86/mapfile.csv
          	GenuineIntel-6-4D,V13,Silvermont_core,core
          	GenuineIntel-6-4C,V13,Silvermont_core,core
      
      which maps each CPU, identified by [vendor, family, model, version, type]
      to a directory of JSON files. Thus two (or more) CPU models support the
      set of PMU events listed in the directory.
      
          	tools/perf/pmu-events/arch/x86/Silvermont_core/
      
      Given this organization of files, the program, jevents:
      
      	- locates all JSON files for each CPU-model of the architecture,
      
      	- parses all JSON files for the CPU-model and generates a C-style
      	  "PMU-events table" (pmu-events.c) for the model
      
      	- locates a mapfile for the architecture
      
      	- builds a global table, mapping each model of CPU to the corresponding
      	  PMU-events table.
      
      The 'pmu-events.c' is generated when building perf and added to libperf.a.
      The global table pmu_events_map[] table in this pmu-events.c will be used
      in perf in a follow-on patch.
      
      If the architecture does not have any JSON files or there is an error in
      processing them, an empty mapping file is created. This would allow the
      build of perf to proceed even if we are not able to provide aliases for
      events.
      
      The parser for JSON files allows parsing Intel style JSON event files. This
      allows to use an Intel event list directly with perf. The Intel event lists
      can be quite large and are too big to store in unswappable kernel memory.
      
      The conversion from JSON to C-style is straight forward.  The parser knows
      (very little) Intel specific information, and can be easily extended to
      handle fields for other CPUs.
      
      The parser code is partially shared with an independent parsing library,
      which is 2-clause BSD licensed. To avoid any conflicts I marked those
      files as BSD licensed too. As part of perf they become GPLv2.
      
      Committer notes:
      
      Fixes:
      
      1) Limit maxfds to 512 to avoid nftd() segfaulting on alloca() with a
         big rlim_max, as in docker containers - acme
      
      2) Make jevents a hostprog, supporting cross compilation - jolsa
      
      3) Use HOSTCC for jevents final step - acme
      
      4) Define _GNU_SOURCE for asprintf, as we can't use CC's EXTRA_CFLAGS,
        that has to have --sysroot on the Android NDK 24 - acme
      
      5) Removed $(srctree)/tools/perf/pmu-events/pmu-events.c from the
         'clean' target, it is generated on $(OUTPUT)pmu-events/pmu-events.c,
         which is already taken care of in the original patch - acme
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lkml.kernel.org/r/1473978296-20712-3-git-send-email-sukadev@linux.vnet.ibm.com
      Link: http://lkml.kernel.org/r/20160927141846.GA6589@kravaSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      80eeb67f
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 110a9e42
      Linus Torvalds authored
      Pull x86 apic updates from Ingo Molnar:
       "The main changes are:
      
         - Persistent CPU/node numbering across CPU hotplug/unplug events.
           This is a pretty involved series of changes that first fetches all
           the information during bootup and then uses it for the various
           hotplug/unplug methods. (Gu Zheng, Dou Liyang)
      
         - IO-APIC hot-add/remove fixes and enhancements. (Rui Wang)
      
         - ... various fixes, cleanups and enhancements"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
        x86/apic: Fix silent & fatal merge conflict in __generic_processor_info()
        acpi: Fix broken error check in map_processor()
        acpi: Validate processor id when mapping the processor
        acpi: Provide mechanism to validate processors in the ACPI tables
        x86/acpi: Set persistent cpuid <-> nodeid mapping when booting
        x86/acpi: Enable MADT APIs to return disabled apicids
        x86/acpi: Introduce persistent storage for cpuid <-> apicid mapping
        x86/acpi: Enable acpi to register all possible cpus at boot time
        x86/numa: Online memory-less nodes at boot time
        x86/apic: Get rid of apic_version[] array
        x86/apic: Order irq_enter/exit() calls correctly vs. ack_APIC_irq()
        x86/ioapic: Ignore root bridges without a companion ACPI device
        x86/apic: Update comment about disabling processor focus
        x86/smpboot: Check APIC ID before setting up default routing
        x86/ioapic: Fix IOAPIC failing to request resource
        x86/ioapic: Fix lost IOAPIC resource after hot-removal and hotadd
        x86/ioapic: Fix setup_res() failing to get resource
        x86/ioapic: Support hot-removal of IOAPICs present during boot
        x86/ioapic: Change prototype of acpi_ioapic_add()
        x86/apic, ACPI: Fix incorrect assignment when handling apic/x2apic entries
        ...
      110a9e42
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · af79ad2b
      Linus Torvalds authored
      Pull scheduler changes from Ingo Molnar:
       "The main changes are:
      
         - irqtime accounting cleanups and enhancements. (Frederic Weisbecker)
      
         - schedstat debugging enhancements, make it more broadly runtime
           available. (Josh Poimboeuf)
      
         - More work on asymmetric topology/capacity scheduling. (Morten
           Rasmussen)
      
         - sched/wait fixes and cleanups. (Oleg Nesterov)
      
         - PELT (per entity load tracking) improvements. (Peter Zijlstra)
      
         - Rewrite and enhance select_idle_siblings(). (Peter Zijlstra)
      
         - sched/numa enhancements/fixes (Rik van Riel)
      
         - sched/cputime scalability improvements (Stanislaw Gruszka)
      
         - Load calculation arithmetics fixes. (Dietmar Eggemann)
      
         - sched/deadline enhancements (Tommaso Cucinotta)
      
         - Fix utilization accounting when switching to the SCHED_NORMAL
           policy. (Vincent Guittot)
      
         - ... plus misc cleanups and enhancements"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (64 commits)
        sched/irqtime: Consolidate irqtime flushing code
        sched/irqtime: Consolidate accounting synchronization with u64_stats API
        u64_stats: Introduce IRQs disabled helpers
        sched/irqtime: Remove needless IRQs disablement on kcpustat update
        sched/irqtime: No need for preempt-safe accessors
        sched/fair: Fix min_vruntime tracking
        sched/debug: Add SCHED_WARN_ON()
        sched/core: Fix set_user_nice()
        sched/fair: Introduce set_curr_task() helper
        sched/core, ia64: Rename set_curr_task()
        sched/core: Fix incorrect utilization accounting when switching to fair class
        sched/core: Optimize SCHED_SMT
        sched/core: Rewrite and improve select_idle_siblings()
        sched/core: Replace sd_busy/nr_busy_cpus with sched_domain_shared
        sched/core: Introduce 'struct sched_domain_shared'
        sched/core: Restructure destroy_sched_domain()
        sched/core: Remove unused @cpu argument from destroy_sched_domain*()
        sched/wait: Introduce init_wait_entry()
        sched/wait: Avoid abort_exclusive_wait() in __wait_on_bit_lock()
        sched/wait: Avoid abort_exclusive_wait() in ___wait_event()
        ...
      af79ad2b
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e606d81d
      Linus Torvalds authored
      Pull RAS updates from Ingo Molnar:
       "The main changes were:
      
         - Lots of enhancements for AMD SMCA (Scalable MCA
           features/extensions) systems: extract, decode and print more
           hardware error information and add matching support on the
           injection/testing side as well. (Yazn Ghannam)
      
         - Various MCE handling improvements on modern Intel Xeons. (Tony
           Luck)
      
         - Plus misc fixes and enhancements"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)
        x86/RAS/mce_amd_inj: Remove debugfs dir recursively on exit
        x86/RAS/mce_amd_inj: Fix signed wrap around when decrementing index 'i'
        x86/RAS/mce_amd_inj: Fix some W= warnings
        x86/MCE/AMD, EDAC: Handle reserved bank 4 on Fam17h properly
        x86/mce/AMD: Extract the error address on SMCA systems
        x86/mce, EDAC/mce_amd: Print MCA_SYND and MCA_IPID during MCE on SMCA systems
        x86/mce/AMD: Save MCA_IPID in MCE struct on SMCA systems
        x86/mce/AMD: Ensure the deferred error interrupt is of type APIC on SMCA systems
        x86/mce/AMD: Update sysfs bank names for SMCA systems
        x86/mce/AMD, EDAC/mce_amd: Define and use tables for known SMCA IP types
        EDAC/mce_amd: Use SMCA prefix for error descriptions arrays
        EDAC/mce_amd: Add missing SMCA error descriptions
        x86/mce/AMD: Read MSRs on the CPU allocating the threshold blocks
        x86/RAS: Add syndrome support to mce_amd_inj
        EDAC/mce_amd: Print syndrome register value on SMCA systems
        x86/mce: Add support for new MCA_SYND register
        x86/mce/AMD: Use msr_ops.misc() in allocate_threshold_blocks()
        x86/mce: Drop X86_FEATURE_MCE_RECOVERY and the related model string test
        x86/mce: Improve memcpy_mcsafe()
        x86/mce: Add PCI quirks to identify Xeons with machine check recovery
        ...
      e606d81d
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 12b7bcb4
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "The main kernel side changes were:
      
         - uprobes enhancements (Masami Hiramatsu)
      
         - Uncore group events enhancements (David Carrillo-Cisneros)
      
         - x86 Intel: Add support for Skylake server uncore PMUs (Kan Liang)
      
         - x86 Intel: LBR cleanups and enhancements, for better branch
           annotation tracking (Peter Zijlstra)
      
         - x86 Intel: Add support for PTWRITE and power event tracing
           (Alexander Shishkin)
      
         - ... various fixes, cleanups and smaller enhancements.
      
        Lots of tooling changes - a couple of highlights:
      
         - Support event group view with hierarchy mode in 'perf top' and
           'perf report' (Namhyung Kim)
      
           e.g.:
      
           $ perf record -e '{cycles,instructions}' make
           $ perf report --hierarchy --stdio
           ...
           #   Overhead  Command / Shared Object / Symbol
           # ......................  ..................................
           ...
           25.74%  27.18%sh
           19.96%  24.14%libc-2.24.so
            9.55%  14.64%[.] __strcmp_sse2
            1.54%   0.00%[.] __tfind
            1.07%   1.13%[.] _int_malloc
            0.95%   0.00%[.] __strchr_sse2
            0.89%   1.39%[.] __tsearch
            0.76%   0.00%[.] strlen
      
         - Add branch stack / basic block info to 'perf annotate --stdio',
           where for each branch, we add an asm comment after the instruction
           with information on how often it was taken and predicted. See
           example with color output at:
      
             http://vger.kernel.org/~acme/perf/annotate_basic_blocks.png
      
           (Peter Zijlstra)
      
         - Add support for using symbols in address filters with Intel PT and
           ARM CoreSight (hardware assisted tracing facilities) (Adrian
           Hunter, Mathieu Poirier)
      
         - Add support for interacting with Coresight PMU ETMs/PTMs, that are
           IP blocks to perform hardware assisted tracing on a ARM CPU core
           (Mathieu Poirier)
      
         - Support generating cross arch probes, i.e. if you specify a vmlinux
           file for different arch than the one in the host machine,
      
              $ perf probe --definition function_name args
      
           will generate the probe definition string needed to append to the
           target machine /sys/kernel/debug/tracing/kprobes_events file, using
           scripting (Masami Hiramatsu).
      
         - Allow configuring the default 'perf report -s' sort order in
           ~/.perfconfig, for instance, "sym,dso" may be more fitting for
           kernel developers. (Arnaldo Carvalho de Melo)
      
         - ... plus lots of other changes, refactorings, features and fixes"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (149 commits)
        perf tests: Add dwarf unwind test for powerpc
        perf probe: Match linkage name with mangled name
        perf probe: Fix to cut off incompatible chars from group name
        perf probe: Skip if the function address is 0
        perf probe: Ignore the error of finding inline instance
        perf intel-pt: Fix decoding when there are address filters
        perf intel-pt: Enable decoder to handle TIP.PGD with missing IP
        perf intel-pt: Read address filter from AUXTRACE_INFO event
        perf intel-pt: Record address filter in AUXTRACE_INFO event
        perf intel-pt: Add a helper function for processing AUXTRACE_INFO
        perf intel-pt: Fix missing error codes processing auxtrace_info
        perf intel-pt: Add support for recording the max non-turbo ratio
        perf intel-pt: Fix snapshot overlap detection decoder errors
        perf probe: Increase debug level of SDT debug messages
        perf record: Add support for using symbols in address filters
        perf symbols: Add dso__last_symbol()
        perf record: Fix error paths
        perf record: Rename label 'out_symbol_exit'
        perf script: Fix vanished idle symbols
        perf evsel: Add support for address filters
        ...
      12b7bcb4
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 00bcf5cd
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - rwsem micro-optimizations (Davidlohr Bueso)
      
         - Improve the implementation and optimize the performance of
           percpu-rwsems. (Peter Zijlstra.)
      
         - Convert all lglock users to better facilities such as percpu-rwsems
           or percpu-spinlocks and remove lglocks. (Peter Zijlstra)
      
         - Remove the ticket (spin)lock implementation. (Peter Zijlstra)
      
         - Korean translation of memory-barriers.txt and related fixes to the
           English document. (SeongJae Park)
      
         - misc fixes and cleanups"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
        x86/cmpxchg, locking/atomics: Remove superfluous definitions
        x86, locking/spinlocks: Remove ticket (spin)lock implementation
        locking/lglock: Remove lglock implementation
        stop_machine: Remove stop_cpus_lock and lg_double_lock/unlock()
        fs/locks: Use percpu_down_read_preempt_disable()
        locking/percpu-rwsem: Add down_read_preempt_disable()
        fs/locks: Replace lg_local with a per-cpu spinlock
        fs/locks: Replace lg_global with a percpu-rwsem
        locking/percpu-rwsem: Add DEFINE_STATIC_PERCPU_RWSEMand percpu_rwsem_assert_held()
        locking/pv-qspinlock: Use cmpxchg_release() in __pv_queued_spin_unlock()
        locking/rwsem, x86: Drop a bogus cc clobber
        futex: Add some more function commentry
        locking/hung_task: Show all locks
        locking/rwsem: Scan the wait_list for readers only once
        locking/rwsem: Remove a few useless comments
        locking/rwsem: Return void in __rwsem_mark_wake()
        locking, rcu, cgroup: Avoid synchronize_sched() in __cgroup_procs_write()
        locking/Documentation: Add Korean translation
        locking/Documentation: Fix a typo of example result
        locking/Documentation: Fix wrong section reference
        ...
      00bcf5cd
    • Linus Torvalds's avatar
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · de956b8f
      Linus Torvalds authored
      Pull EFI updates from Ingo Molnar:
       "Main changes in this cycle were:
      
         - Refactor the EFI memory map code into architecture neutral files
           and allow drivers to permanently reserve EFI boot services regions
           on x86, as well as ARM/arm64. (Matt Fleming)
      
         - Add ARM support for the EFI ESRT driver. (Ard Biesheuvel)
      
         - Make the EFI runtime services and efivar API interruptible by
           swapping spinlocks for semaphores. (Sylvain Chouleur)
      
         - Provide the EFI identity mapping for kexec which allows kexec to
           work on SGI/UV platforms with requiring the "noefi" kernel command
           line parameter. (Alex Thorlton)
      
         - Add debugfs node to dump EFI page tables on arm64. (Ard Biesheuvel)
      
         - Merge the EFI test driver being carried out of tree until now in
           the FWTS project. (Ivan Hu)
      
         - Expand the list of flags for classifying EFI regions as "RAM" on
           arm64 so we align with the UEFI spec. (Ard Biesheuvel)
      
         - Optimise out the EFI mixed mode if it's unsupported (CONFIG_X86_32)
           or disabled (CONFIG_EFI_MIXED=n) and switch the early EFI boot
           services function table for direct calls, alleviating us from
           having to maintain the custom function table. (Lukas Wunner)
      
         - Miscellaneous cleanups and fixes"
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits)
        x86/efi: Round EFI memmap reservations to EFI_PAGE_SIZE
        x86/efi: Allow invocation of arbitrary boot services
        x86/efi: Optimize away setup_gop32/64 if unused
        x86/efi: Use kmalloc_array() in efi_call_phys_prolog()
        efi/arm64: Treat regions with WT/WC set but WB cleared as memory
        efi: Add efi_test driver for exporting UEFI runtime service interfaces
        x86/efi: Defer efi_esrt_init until after memblock_x86_fill
        efi/arm64: Add debugfs node to dump UEFI runtime page tables
        x86/efi: Remove unused find_bits() function
        fs/efivarfs: Fix double kfree() in error path
        x86/efi: Map in physical addresses in efi_map_region_fixed
        lib/ucs2_string: Speed up ucs2_utf8size()
        firmware-gsmi: Delete an unnecessary check before the function call "dma_pool_destroy"
        x86/efi: Initialize status to ensure garbage is not returned on small size
        efi: Replace runtime services spinlock with semaphore
        efi: Don't use spinlocks for efi vars
        efi: Use a file local lock for efivars
        efi/arm*: esrt: Add missing call to efi_esrt_init()
        efi/esrt: Use memremap not ioremap to access ESRT table in memory
        x86/efi-bgrt: Use efi_mem_reserve() to avoid copying image data
        ...
      de956b8f
    • Linus Torvalds's avatar
      Merge branch 'core-smp-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d7a0dab8
      Linus Torvalds authored
      Pull core SMP updates from Ingo Molnar:
       "Two main change is generic vCPU pinning and physical CPU SMP-call
        support, for Xen to be able to perform certain calls on specific
        physical CPUs - by Juergen Gross"
      
      * 'core-smp-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        smp: Allocate smp_call_on_cpu() workqueue on stack too
        hwmon: Use smp_call_on_cpu() for dell-smm i8k
        dcdbas: Make use of smp_call_on_cpu()
        xen: Add xen_pin_vcpu() to support calling functions on a dedicated pCPU
        smp: Add function to execute a function synchronously on a CPU
        virt, sched: Add generic vCPU pinning support
        xen: Sync xen header
      d7a0dab8
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 4b978934
      Linus Torvalds authored
      Pull RCU updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Expedited grace-period changes, most notably avoiding having user
           threads drive expedited grace periods, using a workqueue instead.
      
         - Miscellaneous fixes, including a performance fix for lists that was
           sent with the lists modifications.
      
         - CPU hotplug updates, most notably providing exact CPU-online
           tracking for RCU. This will in turn allow removal of the checks
           supporting RCU's prior heuristic that was based on the assumption
           that CPUs would take no longer than one jiffy to come online.
      
         - Torture-test updates.
      
         - Documentation updates"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
        list: Expand list_first_entry_or_null()
        torture: TOROUT_STRING(): Insert a space between flag and message
        rcuperf: Consistently insert space between flag and message
        rcutorture: Print out barrier error as document says
        torture: Add task state to writer-task stall printk()s
        torture: Convert torture_shutdown() to hrtimer
        rcutorture: Convert to hotplug state machine
        cpu/hotplug: Get rid of CPU_STARTING reference
        rcu: Provide exact CPU-online tracking for RCU
        rcu: Avoid redundant quiescent-state chasing
        rcu: Don't use modular infrastructure in non-modular code
        sched: Make wake_up_nohz_cpu() handle CPUs going offline
        rcu: Use rcu_gp_kthread_wake() to wake up grace period kthreads
        rcu: Use RCU's online-CPU state for expedited IPI retry
        rcu: Exclude RCU-offline CPUs from expedited grace periods
        rcu: Make expedited RCU CPU stall warnings respond to controls
        rcu: Stop disabling expedited RCU CPU stall warnings
        rcu: Drive expedited grace periods from workqueue
        rcu: Consolidate expedited grace period machinery
        documentation: Record reason for rcu_head two-byte alignment
        ...
      4b978934
    • Linus Torvalds's avatar
      Merge tag 'pnp-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 72a9cdd0
      Linus Torvalds authored
      Pull PNP update from Rafael Wysocki:
       "This makes more PNP core code explicitly non-modular (Paul Gortmaker)"
      
      * tag 'pnp-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PNP: isapnp: make core more explicitly non-modular
      72a9cdd0
    • Linus Torvalds's avatar
      Merge tag 'acpi-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 72d39926
      Linus Torvalds authored
      Pull ACPI updates from Rafael Wysocki:
       "First off, the ACPICA code in the kernel is updated to upstream
        revision 20160831 that brings in a few bug fixes and cleanups. In
        particular, it is possible to mask GPEs now (and the sysfs interface
        for GPE control is fixed on top of that), problems related to the
        table loading mechanism are fixed and all code related to FADT version
        2 (which has never been part of the ACPI specification) is dropped.
      
        On the new features front, there is a new watchdog driver based on the
        ACPI WDAT (ACPI Watchdog Action Table), needed on some platforms to
        replace the iTCO watchdog that doesn't work there, and some UART
        devices get new definitions of built-in properties (to be accessed via
        the generic device properties API).
      
        Also, included is a fix for an ACPI-related PCI resorces allocation
        issue and a few problems in the EC driver and in the button and
        battery drivers are fixed.
      
        In addition to that, the ACPI CPPC library is updated to make batching
        of requests sent over the PCC channel possible (which reduces the PCC
        usage overhead substantially in some cases) and to support functional
        fixed hardware (FFH) type of CPPC registers access (which will allow
        CPPC to be used on x86 too in the future).
      
        As usual, there are some assorted fixes and cleanups too.
      
        Specifics:
      
         - Update of the ACPICA code in the kernel to upstream revision
           20160831 with the following major changes:
      
            * New mechanism for GPE masking.
            * Fixes for issues related to the LoadTable operator and table
              loading.
            * Fixes for issues related to so-called module-level code (MLC),
              that is AML that doesn't belong to any methods.
            * Change of the return value of the _OSI method to reflect the
              Windows behavior.
            * GAS (Generic Address Structure) support fix related to 32-bit
              FADT addresses.
            * Elimination of unnecessary FADT version 2 support.
            * ACPI tools fixes and cleanups.
      
           From Bob Moore, Lv Zheng, and Jung-uk Kim.
      
         - ACPI sysfs interface updates to fix GPE handling (on top of the new
           GPE masking mechanism in ACPICA) and issues related to table
           loading (Lv Zheng).
      
         - New watchdog driver based on the ACPI WDAT (ACPI Watchdog Action
           Table), needed on some platforms to replace the iTCO watchdog that
           doesn't work there and related updates of the intel_pmc_ipc,
           i2c/i801 and MFD/lcp_ich drivers (Mika Westerberg).
      
         - Driver core fix to prevent it from leaking secondary fwnode objects
           during device removal (Lukas Wunner).
      
         - New definitions of built-in properties for UART in ACPI-based x86
           SoC drivers and a 8250_dw driver quirk for the APM X-Gene SoC
           (Heikki Krogerus).
      
         - New device ID for the Vulcan SPI controller and constification of
           local strucures in the AMD SoC (APD) ACPI driver (Kamlakant Patel,
           Julia Lawall).
      
         - Fix for a bug causing the allocation of PCI resorces to fail if
           ACPI-enumerated child platform devices are registered below the PCI
           devices in question (Mika Westerberg).
      
         - Change of the default polarity for PCI legacy IRQs to high on
           systems booting wth ACPI on platforms with a GIC interrupt
           controller model fixing the discrepancy between the specification
           and HW behavior (Lorenzo Pieralisi).
      
         - Fixes for the handling of system suspend/resume in the ACPI EC
           driver and update of that driver to make it cope with the cases
           when the EC device defined in the ECDT has to be used throughout
           the entire system life cycle (Lv Zheng).
      
         - Update of the ACPI CPPC library to allow it to batch requests sent
           over the PCC channel (to reduce overhead), to support the fixed
           functional hardware (FFH) CPPC registers access type, to notify the
           mailbox framework about TX completions when the interrupt flag is
           set for the PCC mailbox, and to support HW-Reduced Communication
           Subspace type 2 (Ashwin Chaugule, Prashanth Prakash, Srinivas
           Pandruvada, Hoan Tran).
      
         - ACPI button driver fix and documentation update related to the
           handling of laptop lids (Lv Zheng).
      
         - ACPI battery driver initialization fix (Carlos Garnacho).
      
         - ACPI GPIO enumeration documentation update (Mika Westerberg).
      
         - Assorted updates of the core ACPI bus type code (Lukas Wunner, Lv
           Zheng).
      
         - Assorted cleanups of the ACPI table parsing code and the
           x86-specific ACPI code (Al Stone).
      
         - Fixes for assorted ACPI-related issues found in linux-next (Wei
           Yongjun)"
      
      * tag 'acpi-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (98 commits)
        ACPI / documentation: Use recommended name in GPIO property names
        watchdog: wdat_wdt: Fix warning for using 0 as NULL
        watchdog: wdat_wdt: fix return value check in wdat_wdt_probe()
        platform/x86: intel_pmc_ipc: Do not create iTCO watchdog when WDAT table exists
        i2c: i801: Do not create iTCO watchdog when WDAT table exists
        mfd: lpc_ich: Do not create iTCO watchdog when WDAT table exists
        ACPI / bus: Adjust ACPI subsystem initialization for new table loading mode
        ACPICA: Parser: Fix a regression in LoadTable support
        ACPICA: Tables: Fix "UNLOAD" code path lock issues
        ACPI / watchdog: Add support for WDAT hardware watchdog
        ACPI / platform: Pay attention to parent device's resources
        PCI: Add pci_find_resource()
        ACPI / CPPC: Support PCC with interrupt flag
        ACPI / sysfs: Update sysfs signature handling code
        ACPI / sysfs: Fix an issue for LoadTable opcode
        ACPICA: Tables: Fix a regression in acpi_tb_find_table()
        ACPI / tables: Remove duplicated include from tables.c
        ACPI / APD: constify local structures
        x86: ACPI: make variable names clearer in acpi_parse_madt_lapic_entries()
        x86: ACPI: remove extraneous white space after semicolon
        ...
      72d39926
    • Linus Torvalds's avatar
      Merge tag 'pm-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 72ec9456
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "Traditionally, cpufreq is the area with the greatest number of
        changes, but there are fewer of them than last time. There also is
        some activity in the generic power domains and the devfreq frameworks,
        a couple of system suspend and hibernation fixes and some assorted
        changes in other places.
      
        One new feature is the cpufreq change to allow the scheduler to pass
        hints to the governors' utilization update callbacks and some code
        rework based on that. Another one is the support for domain removal in
        the generic power domains framework. Also it is now possible to use
        hibernation with PAGE_POISONING_ZERO enabled and devfreq supports the
        RockChip DFI controller and the rk3399 DMC.
      
        The rest of the changes is mostly fixes and cleanups in a number of
        places.
      
        Specifics:
      
         - Add a mechanism for passing hints from the scheduler to cpufreq
           governors via their utilization update callbacks and use it to
           introduce "IOwait boosting" into the schedutil governor and
           intel_pstate that will make them boost performance if the enqueued
           task was previously waiting on I/O (Rafael Wysocki).
      
         - Fix a schedutil governor problem that causes it to overestimate
           utilization if SMT is in use (Steve Muckle).
      
         - Update defconfigs trying to use the schedutil governor as a module
           which is not possible any more (Javier Martinez Canillas).
      
         - Update the intel_pstate's pstate_sample tracepoint to take "IOwait
           boosting" into account (Srinivas Pandruvada).
      
         - Fix a problem in the cpufreq core causing it to mishandle the
           initialization of CPUs registered after the cpufreq driver (Viresh
           Kumar, Rafael Wysocki).
      
         - Make the cpufreq-dt driver support per-policy governor tunables,
           clean it up and update its Kconfig description (Viresh Kumar).
      
         - Add support for more ARM platforms to the cpufreq-dt driver
           (Chanwoo Choi, Dave Gerlach, Geert Uytterhoeven).
      
         - Make the cpufreq CPPC driver report frequencies in KHz to avoid
           user space compatiblility issues (Al Stone, Hoan Tran).
      
         - Clean up a few cpufreq drivers (st, kirkwood, SCPI) a bit (Colin
           Ian King, Markus Elfring).
      
         - Constify some local structures in the intel_pstate driver (Julia
           Lawall).
      
         - Add a Documentation/cpu-freq/ entry to MAINTAINERS (Jean Delvare).
      
         - Add support for PM domain removal to the generic power domains
           (genpd) framework, add new DT helper functions to it and make it
           always enable debugfs support if available (Jon Hunter, Tomeu
           Vizoso).
      
         - Clean up the generic power domains (genpd) framework and make it
           avoid measuring power-on and power-off latencies during system-wide
           PM transitions (Ulf Hansson).
      
         - Add support for the RockChip DFI controller and the rk3399 DMC to
           the devfreq framework (Lin Huang, Axel Lin, Arnd Bergmann).
      
         - Add COMPILE_TEST to the devfreq framework (Krzysztof Kozlowski,
           Stephen Rothwell).
      
         - Fix a minor issue in the exynos-ppmu devfreq driver and fix up
           devfreq Kconfig indentation style (Wei Yongjun, Jisheng Zhang).
      
         - Fix the system suspend interface to make suspend-to-idle work if
           platform suspend operations have not been registered (Sudeep
           Holla).
      
         - Make it possible to use hibernation with PAGE_POISONING_ZERO
           enabled (Anisse Astier).
      
         - Increas the default timeout of the system suspend/resume watchdog
           and make it depend on EXPERT (Chen Yu).
      
         - Make the operating performance points (OPP) framework avoid using
           OPPs that aren't supported by the platform and fix a build warning
           in it (Dave Gerlach, Arnd Bergmann).
      
         - Fix the ARM cpuidle driver's return value (Christophe Jaillet).
      
         - Make the SmartReflex AVS (Adaptive Voltage Scaling) driver use more
           common logging style (Joe Perches)"
      
      * tag 'pm-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (58 commits)
        PM / OPP: Don't support OPP if it provides supported-hw but platform does not
        cpufreq: st: add missing \n to end of dev_err message
        cpufreq: kirkwood: add missing \n to end of dev_err messages
        PM / Domains: Rename pm_genpd_sync_poweron|poweroff()
        PM / Domains: Don't measure latency of ->power_on|off() during system PM
        PM / Domains: Remove redundant system PM callbacks
        PM / Domains: Simplify detaching a device from its genpd
        PM / devfreq: rk3399_dmc: Remove explictly regulator_put call in .remove
        PM / devfreq: rockchip: add PM_DEVFREQ_EVENT dependency
        PM / OPP: avoid maybe-uninitialized warning
        PM / Domains: Allow holes in genpd_data.domains array
        cpufreq: CPPC: Avoid overflow when calculating desired_perf
        cpufreq: ti: Use generic platdev driver
        cpufreq: intel_pstate: Add io_boost trace
        partial revert of "PM / devfreq: Add COMPILE_TEST for build coverage"
        cpufreq: intel_pstate: Use IOWAIT flag in Atom algorithm
        cpufreq: schedutil: Add iowait boosting
        cpufreq / sched: SCHED_CPUFREQ_IOWAIT flag to indicate iowait condition
        PM / Domains: Add support for removing nested PM domains by provider
        PM / Domains: Add support for removing PM domains
        ...
      72ec9456