1. 21 Jul, 2017 1 commit
    • Jiri Olsa's avatar
      perf/core: Fix locking for children siblings group read · 2aeb1883
      Jiri Olsa authored
      We're missing ctx lock when iterating children siblings
      within the perf_read path for group reading. Following
      race and crash can happen:
      
      User space doing read syscall on event group leader:
      
      T1:
        perf_read
          lock event->ctx->mutex
          perf_read_group
            lock leader->child_mutex
            __perf_read_group_add(child)
              list_for_each_entry(sub, &leader->sibling_list, group_entry)
      
      ---->   sub might be invalid at this point, because it could
              get removed via perf_event_exit_task_context in T2
      
      Child exiting and cleaning up its events:
      
      T2:
        perf_event_exit_task_context
          lock ctx->mutex
          list_for_each_entry_safe(child_event, next, &child_ctx->event_list,...
            perf_event_exit_event(child)
              lock ctx->lock
              perf_group_detach(child)
              unlock ctx->lock
      
      ---->   child is removed from sibling_list without any sync
              with T1 path above
      
              ...
              free_event(child)
      
      Before the child is removed from the leader's child_list,
      (and thus is omitted from perf_read_group processing), we
      need to ensure that perf_read_group touches child's
      siblings under its ctx->lock.
      
      Peter further notes:
      
      | One additional note; this bug got exposed by commit:
      |
      |   ba5213ae ("perf/core: Correct event creation with PERF_FORMAT_GROUP")
      |
      | which made it possible to actually trigger this code-path.
      Tested-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
      Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Fixes: ba5213ae ("perf/core: Correct event creation with PERF_FORMAT_GROUP")
      Link: http://lkml.kernel.org/r/20170720141455.2106-1-jolsa@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      2aeb1883
  2. 20 Jul, 2017 1 commit
    • Alexander Shishkin's avatar
      perf/core: Fix scheduling regression of pinned groups · 3bda69c1
      Alexander Shishkin authored
      Vince Weaver reported:
      
      > I was tracking down some regressions in my perf_event_test testsuite.
      > Some of the tests broke in the 4.11-rc1 timeframe.
      >
      > I've bisected one of them, this report is about
      >	tests/overflow/simul_oneshot_group_overflow
      > This test creates an event group containing two sampling events, set
      > to overflow to a signal handler (which disables and then refreshes the
      > event).
      >
      > On a good kernel you get the following:
      > 	Event perf::instructions with period 1000000
      > 	Event perf::instructions with period 2000000
      > 		fd 3 overflows: 946 (perf::instructions/1000000)
      > 		fd 4 overflows: 473 (perf::instructions/2000000)
      > 	Ending counts:
      > 		Count 0: 946379875
      > 		Count 1: 946365218
      >
      > With the broken kernels you get:
      > 	Event perf::instructions with period 1000000
      > 	Event perf::instructions with period 2000000
      > 		fd 3 overflows: 938 (perf::instructions/1000000)
      > 		fd 4 overflows: 318 (perf::instructions/2000000)
      > 	Ending counts:
      > 		Count 0: 946373080
      > 		Count 1: 653373058
      
      The root cause of the bug is that the following commit:
      
        487f05e1 ("perf/core: Optimize event rescheduling on active contexts")
      
      erronously assumed that event's 'pinned' setting determines whether the
      event belongs to a pinned group or not, but in fact, it's the group
      leader's pinned state that matters.
      
      This was discovered by Vince in the test case described above, where two instruction
      counters are grouped, the group leader is pinned, but the other event is not;
      in the regressed case the counters were off by 33% (the difference between events'
      periods), but should be the same within the error margin.
      
      Fix the problem by looking at the group leader's pinning.
      Reported-by: default avatarVince Weaver <vincent.weaver@maine.edu>
      Tested-by: default avatarVince Weaver <vincent.weaver@maine.edu>
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Fixes: 487f05e1 ("perf/core: Optimize event rescheduling on active contexts")
      Link: http://lkml.kernel.org/r/87lgnmvw7h.fsf@ashishki-desk.ger.corp.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      3bda69c1
  3. 18 Jul, 2017 3 commits
    • Jiri Olsa's avatar
      perf/x86/intel: Fix debug_store reset field for freq events · dc853e26
      Jiri Olsa authored
      There's a bug in PEBs event enabling code, that prevents PEBS
      freq events to work properly after non freq PEBS event was run.
      
      freq events - perf_event_attr::freq set
                    -F <freq> option of perf record
      
      PEBS events - perf_event_attr::precise_ip > 0
                    default for perf record
      
      Like in following example with CPU 0 busy, we expect ~10000 samples
      for following perf tool run:
      
        # perf record -F 10000 -C 0 sleep 1
        [ perf record: Woken up 2 times to write data ]
        [ perf record: Captured and wrote 0.640 MB perf.data (10031 samples) ]
      
      Everything's fine, but once we run non freq PEBS event like:
      
        # perf record -c 10000 -C 0 sleep 1
        [ perf record: Woken up 4 times to write data ]
        [ perf record: Captured and wrote 1.053 MB perf.data (20061 samples) ]
      
      the freq events start to fail like this:
      
        # perf record -F 10000 -C 0 sleep 1
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.185 MB perf.data (40 samples) ]
      
      The issue is in non freq PEBs event initialization of debug_store reset
      field, which value is used to auto-reload the counter value after PEBS
      event drain. This value is not being used for PEBS freq events, but once
      we run non freq event it stays in debug_store data and screws the
      sample_freq counting for PEBS freq events.
      
      Setting the reset field to 0 for freq events.
      Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
      Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Kan Liang <kan.liang@intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/20170714163551.19459-1-jolsa@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      dc853e26
    • Kan Liang's avatar
      perf/x86/intel: Add Goldmont Plus CPU PMU support · dd0b06b5
      Kan Liang authored
      Add perf core PMU support for Intel Goldmont Plus CPU cores:
      
       - The init code is based on Goldmont.
       - There is a new cache event list, based on the Goldmont cache event
         list.
       - All four general-purpose performance counters support PEBS.
       - The first general-purpose performance counter is for reduced skid
         PEBS mechanism. Using :ppp to indicate the event which want to do
         reduced skid PEBS.
       - Goldmont Plus has 4-wide pipeline for Topdown
      Signed-off-by: default avatarKan Liang <kan.liang@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: acme@kernel.org
      Link: http://lkml.kernel.org/r/20170712134423.17766-1-kan.liang@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      dd0b06b5
    • Harry Pan's avatar
      perf/x86/intel: Enable C-state residency events for Apollo Lake · 5c10b048
      Harry Pan authored
      Goldmont microarchitecture supports C1/C3/C6, PC2/PC3/PC6/PC10 state
      residency counters, the patch enables them for Apollo Lake platform.
      
      The MSR information is based on Intel Software Developers' Manual,
      Vol. 4, Order No. 335592, Table 2-6 and 2-12.
      Signed-off-by: default avatarHarry Pan <harry.pan@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: bp@suse.de
      Cc: davidcc@google.com
      Cc: gs0622@gmail.com
      Cc: lukasz.odzioba@intel.com
      Cc: piotr.luc@intel.com
      Cc: srinivas.pandruvada@linux.intel.com
      Link: http://lkml.kernel.org/r/20170717103749.24337-1-harry.pan@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      5c10b048
  4. 13 Jul, 2017 1 commit
  5. 12 Jul, 2017 1 commit
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Accept zero as the kernel base address · 4b1303d0
      Arnaldo Carvalho de Melo authored
      Which is the case in S/390, where symbols were not being resolved
      because machine__get_kernel_start was only setting machine->kernel_start
      when the just successfully loaded kernel symtab had its map->start set
      to !0, when it was left at (1ULL << 63) assuming a partitioning of the
      address space for user/kernel, which is not the case in S/390 nor in
      Sparc.
      
      So just check if map__load() was successfull and set
      machine->kernel_start to zero, fixing kernel symbol resolution on S/390.
      
      Test performed by Thomas:
      
       ----
      
        I like this patch. I have done a new build and removed all my debug output to start
        from scratch. Without your patch I get this:
      
        # Samples: 4  of event 'cpu-clock'
        # Event count (approx.): 1000000
        #
        # Children      Self  Command  Shared Object     Symbol
        # ........  ........  .......  ................  ........................
            75.00%     0.00%  true     [unknown]         [k] 0x00000000004bedda
                    |
                    ---0x4bedda
                       |
                       |--50.00%--0x42693a
                       |          |
                       |           --25.00%--0x2a72e0
                       |                     0x2af0ca
                       |                     0x3d1003fe4c0
                       |
                        --25.00%--0x4272bc
                                  0x26fa84
      
        and with your patch (I just rebuilt the perf tool, nothing else and used the same
        perf.data file as input):
      
        # Samples: 4  of event 'cpu-clock'
        # Event count (approx.): 1000000
        #
        # Children      Self  Command  Shared Object               Symbol
        # ........  ........  .......  ..........................  ..................................
            75.00%     0.00%  true     [kernel.vmlinux]            [k] pgm_check_handler
                    |
                    ---pgm_check_handler
                       do_dat_exception
                       handle_mm_fault
                       __handle_mm_fault
                       filemap_map_pages
                       |
                       |--25.00%--rcu_read_lock_held
                       |          rcu_lockdep_current_cpu_online
                       |          0x3d1003ff4c0
                       |
                        --25.00%--lock_release
      
        Looks good to me....
       ----
      Reported-and-Tested-by: default avatarThomas-Mich Richter <tmricht@linux.vnet.ibm.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Zvonko Kosic <zvonko.kosic@de.ibm.com>
      Link: http://lkml.kernel.org/n/tip-dk0n1uzmbe0tbthrpfqlx6bz@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4b1303d0
  6. 11 Jul, 2017 2 commits
  7. 10 Jul, 2017 3 commits
  8. 08 Jul, 2017 3 commits
  9. 05 Jul, 2017 1 commit
  10. 04 Jul, 2017 6 commits
    • Jiri Olsa's avatar
      perf unwind: Do not fail due to missing unwind support · 1934adf7
      Jiri Olsa authored
      We currently fail the MMAP event processing if we don't have the MMAP
      event's specific arch unwind support compiled in.
      
      That's wrong and can lead to unresolved mmaps in report output for 32bit
      binaries on 64bit server, like in this example on x86_64 server:
      
        $ cat ex.c
        int main(int argc, char **argv)
        {
                while (1) {}
        }
        $ gcc -o ex -m32 ex.c
        $ perf record ./ex
        ^C[ perf record: Woken up 2 times to write data ]
        [ perf record: Captured and wrote 0.371 MB perf.data (9322 samples) ]
      
      Before:
        $ perf report --stdio
      
        SNIP
      
        # Overhead  Command  Shared Object     Symbol
        # ........  .......  ................  ......................
        #
           100.00%  ex       [unknown]         [.] 0x00000000080483de
             0.00%  ex       [unknown]         [.] 0x00000000f76dba4f
             0.00%  ex       [unknown]         [.] 0x00000000f76e4c11
             0.00%  ex       [unknown]         [.] 0x00000000f76daa30
      
      After:
        $ perf report --stdio
      
        SNIP
      
        # Overhead  Command  Shared Object  Symbol
        # ........  .......  .............  ...............
        #
           100.00%  ex       ex             [.] main
             0.00%  ex       ld-2.24.so     [.] _dl_start
             0.00%  ex       ld-2.24.so     [.] do_lookup_x
             0.00%  ex       ld-2.24.so     [.] _start
      
      The fix is not to fail, just warn if there's not unwind support compiled
      in.
      Reported-by: default avatarMichael Lyle <mlyle@lyle.org>
      Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/20170704131131.27508-1-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      1934adf7
    • Arnaldo Carvalho de Melo's avatar
      perf evsel: Set attr.exclude_kernel when probing max attr.precise_ip · 97365e81
      Arnaldo Carvalho de Melo authored
      We should set attr.exclude_kernel when probing for attr.precise_ip
      level, otherwise !CAP_SYS_ADMIN users will not default to skidless
      samples in capable hardware.
      
      The increase in the paranoid level in commit 0161028b ("perf/core:
      Change the default paranoia level to 2") broke this, fix it by excluding
      kernel samples when probing.
      
      Before:
      
        $ perf record usleep 1
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.018 MB perf.data (6 samples) ]
        $ perf evlist -v
        cycles:u: sample_freq: 4000, sample_type: IP|TID|TIME|PERIOD, exclude_kernel: 1
      
      After:
      
        $ perf record usleep 1
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.018 MB perf.data (8 samples) ]
        $ perf evlist -v
        cycles:ppp: sample_freq: 4000, sample_type: IP|TID|TIME|PERIOD, exclude_kernel: 1, precise_ip: 3
                                                                                           ^^^^^^^^^^^^^
                                                                                           ^^^^^^^^^^^^^
                                                                                           ^^^^^^^^^^^^^
        $
      
      To further clarify: we always set .exclude_kernel when non !CAP_SYS_ADMIN
      users profile, its just on the attr.precise_ip probing that we weren't doing
      so, fix it.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Fixes: 7f8d1ade ("perf tools: By default use the most precise "cycles" hw counter available")
      Link: http://lkml.kernel.org/n/tip-t2qttwhbnua62o5gt75cueml@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      97365e81
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 4422d80e
      Linus Torvalds authored
      Pull RAS updates from Thomas Gleixner:
       "The RAS updates for the 4.13 merge window:
      
         - Cleanup of the MCE injection facility (Borsilav Petkov)
      
         - Rework of the AMD/SMCA handling (Yazen Ghannam)
      
         - Enhancements for ACPI/APEI to handle new notitication types (Shiju
           Jose)
      
         - atomic_t to refcount_t conversion (Elena Reshetova)
      
         - A few fixes and enhancements all over the place"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        RAS/CEC: Check the correct variable in the debugfs error handling
        x86/mce: Always save severity in machine_check_poll()
        x86/MCE, xen/mcelog: Make /dev/mcelog registration messages more precise
        x86/mce: Update bootlog description to reflect behavior on AMD
        x86/mce: Don't disable MCA banks when offlining a CPU on AMD
        x86/mce/mce-inject: Preset the MCE injection struct
        x86/mce: Clean up include files
        x86/mce: Get rid of register_mce_write_callback()
        x86/mce: Merge mce_amd_inj into mce-inject
        x86/mce/AMD: Use saved threshold block info in interrupt handler
        x86/mce/AMD: Use msr_stat when clearing MCA_STATUS
        x86/mce/AMD: Carve out SMCA bank configuration
        x86/mce/AMD: Redo error logging from APIC LVT interrupt handlers
        x86/mce: Convert threshold_bank.cpus from atomic_t to refcount_t
        RAS: Make local function parse_ras_param() static
        ACPI/APEI: Handle GSIV and GPIO notification types
      4422d80e
    • Linus Torvalds's avatar
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9a9594ef
      Linus Torvalds authored
      Pull SMP hotplug updates from Thomas Gleixner:
       "This update is primarily a cleanup of the CPU hotplug locking code.
      
        The hotplug locking mechanism is an open coded RWSEM, which allows
        recursive locking. The main problem with that is the recursive nature
        as it evades the full lockdep coverage and hides potential deadlocks.
      
        The rework replaces the open coded RWSEM with a percpu RWSEM and
        establishes full lockdep coverage that way.
      
        The bulk of the changes fix up recursive locking issues and address
        the now fully reported potential deadlocks all over the place. Some of
        these deadlocks have been observed in the RT tree, but on mainline the
        probability was low enough to hide them away."
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
        cpu/hotplug: Constify attribute_group structures
        powerpc: Only obtain cpu_hotplug_lock if called by rtasd
        ARM/hw_breakpoint: Fix possible recursive locking for arch_hw_breakpoint_init
        cpu/hotplug: Remove unused check_for_tasks() function
        perf/core: Don't release cred_guard_mutex if not taken
        cpuhotplug: Link lock stacks for hotplug callbacks
        acpi/processor: Prevent cpu hotplug deadlock
        sched: Provide is_percpu_thread() helper
        cpu/hotplug: Convert hotplug locking to percpu rwsem
        s390: Prevent hotplug rwsem recursion
        arm: Prevent hotplug rwsem recursion
        arm64: Prevent cpu hotplug rwsem recursion
        kprobes: Cure hotplug lock ordering issues
        jump_label: Reorder hotplug lock and jump_label_lock
        perf/tracing/cpuhotplug: Fix locking order
        ACPI/processor: Use cpu_hotplug_disable() instead of get_online_cpus()
        PCI: Replace the racy recursion prevention
        PCI: Use cpu_hotplug_disable() instead of get_online_cpus()
        perf/x86/intel: Drop get_online_cpus() in intel_snb_check_microcode()
        x86/perf: Drop EXPORT of perf_check_microcode
        ...
      9a9594ef
    • Linus Torvalds's avatar
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3ad918e6
      Linus Torvalds authored
      Pull x86 timers updates from Thomas Gleixner:
       "This update contains:
      
         - The solution for the TSC deadline timer borkage, which is caused by
           a hardware problem in the TSC_ADJUST/TSC_DEADLINE_TIMER logic.
      
           The problem is documented now and fixed with a microcode update, so
           we can remove the workaround and just check for the microcode version.
      
           If the microcode is not up to date, then the TSC deadline timer is
           disabled. If the borkage is fixed by the proper microcode version,
           then the deadline timer can be used. In both cases the restrictions
           to the range of the TSC_ADJUST value, which were added as
           workarounds, are removed.
      
        - A few simple fixes and updates to the timer related x86 code"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc: Call check_system_tsc_reliable() before unsynchronized_tsc()
        x86/hpet: Do not use smp_processor_id() in preemptible code
        x86/time: Make setup_default_timer_irq() static
        x86/tsc: Remove the TSC_ADJUST clamp
        x86/apic: Add TSC_DEADLINE quirk due to errata
        x86/apic: Change the lapic name in deadline mode
      3ad918e6
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8c073517
      Linus Torvalds authored
      Pull x86 PCI updates from Thomas Gleixner:
       "This update provides the seperation of x86 PCI accessors from the
        global PCI lock in the generic PCI config space accessors.
      
        The reasons for this are:
      
         - x86 has it's own PCI config lock for various reasons, so the
           accessors have to lock two locks nested.
      
         - The ECAM (mmconfig) access to the extended configuration space does
           not require locking. The existing generic locking causes a massive
           lock contention when accessing the extended config space of the
           Uncore facility for performance monitoring.
      
        The commit which switched the access to the primary config space over
        to ECAM mode has been removed from the branch, so the primary config
        space is still accessed with type1 accessors properly serialized by
        the x86 internal locking.
      
        Bjorn agreed on merging this through the x86 tree"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/PCI: Select CONFIG_PCI_LOCKLESS_CONFIG
        PCI: Provide Kconfig option for lockless config space accessors
        x86/PCI/ce4100: Properly lock accessor functions
        x86/PCI: Abort if legacy init fails
        x86/PCI: Remove duplicate defines
      8c073517
  11. 03 Jul, 2017 18 commits
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 03ffbcdd
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
       "The irq department delivers:
      
         - Expand the generic infrastructure handling the irq migration on CPU
           hotplug and convert X86 over to it. (Thomas Gleixner)
      
           Aside of consolidating code this is a preparatory change for:
      
         - Finalizing the affinity management for multi-queue devices. The
           main change here is to shut down interrupts which are affine to a
           outgoing CPU and reenabling them when the CPU comes online again.
           That avoids moving interrupts pointlessly around and breaking and
           reestablishing affinities for no value. (Christoph Hellwig)
      
           Note: This contains also the BLOCK-MQ and NVME changes which depend
           on the rework of the irq core infrastructure. Jens acked them and
           agreed that they should go with the irq changes.
      
         - Consolidation of irq domain code (Marc Zyngier)
      
         - State tracking consolidation in the core code (Jeffy Chen)
      
         - Add debug infrastructure for hierarchical irq domains (Thomas
           Gleixner)
      
         - Infrastructure enhancement for managing generic interrupt chips via
           devmem (Bartosz Golaszewski)
      
         - Constification work all over the place (Tobias Klauser)
      
         - Two new interrupt controller drivers for MVEBU (Thomas Petazzoni)
      
         - The usual set of fixes, updates and enhancements all over the
           place"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (112 commits)
        irqchip/or1k-pic: Fix interrupt acknowledgement
        irqchip/irq-mvebu-gicp: Allocate enough memory for spi_bitmap
        irqchip/gic-v3: Fix out-of-bound access in gic_set_affinity
        nvme: Allocate queues for all possible CPUs
        blk-mq: Create hctx for each present CPU
        blk-mq: Include all present CPUs in the default queue mapping
        genirq: Avoid unnecessary low level irq function calls
        genirq: Set irq masked state when initializing irq_desc
        genirq/timings: Add infrastructure for estimating the next interrupt arrival time
        genirq/timings: Add infrastructure to track the interrupt timings
        genirq/debugfs: Remove pointless NULL pointer check
        irqchip/gic-v3-its: Don't assume GICv3 hardware supports 16bit INTID
        irqchip/gic-v3-its: Add ACPI NUMA node mapping
        irqchip/gic-v3-its-platform-msi: Make of_device_ids const
        irqchip/gic-v3-its: Make of_device_ids const
        irqchip/irq-mvebu-icu: Add new driver for Marvell ICU
        irqchip/irq-mvebu-gicp: Add new driver for Marvell GICP
        dt-bindings/interrupt-controller: Add DT binding for the Marvell ICU
        genirq/irqdomain: Remove auto-recursive hierarchy support
        irqchip/MSI: Use irq_domain_update_bus_token instead of an open coded access
        ...
      03ffbcdd
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1b044f1c
      Linus Torvalds authored
      Pull timer updates from Thomas Gleixner:
       "A rather large update for timers/timekeeping:
      
         - compat syscall consolidation (Al Viro)
      
         - Posix timer consolidation (Christoph Helwig / Thomas Gleixner)
      
         - Cleanup of the device tree based initialization for clockevents and
           clocksources (Daniel Lezcano)
      
         - Consolidation of the FTTMR010 clocksource/event driver (Linus
           Walleij)
      
         - The usual set of small fixes and updates all over the place"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (93 commits)
        timers: Make the cpu base lock raw
        clocksource/drivers/mips-gic-timer: Fix an error code in 'gic_clocksource_of_init()'
        clocksource/drivers/fsl_ftm_timer: Unmap region obtained by of_iomap
        clocksource/drivers/tcb_clksrc: Make IO endian agnostic
        clocksource/drivers/sun4i: Switch to the timer-of common init
        clocksource/drivers/timer-of: Fix invalid iomap check
        Revert "ktime: Simplify ktime_compare implementation"
        clocksource/drivers: Fix uninitialized variable use in timer_of_init
        kselftests: timers: Add test for frequency step
        kselftests: timers: Fix inconsistency-check to not ignore first timestamp
        time: Add warning about imminent deprecation of CONFIG_GENERIC_TIME_VSYSCALL_OLD
        time: Clean up CLOCK_MONOTONIC_RAW time handling
        posix-cpu-timers: Make timespec to nsec conversion safe
        itimer: Make timeval to nsec conversion range limited
        timers: Fix parameter description of try_to_del_timer_sync()
        ktime: Simplify ktime_compare implementation
        clocksource/drivers/fttmr010: Factor out clock read code
        clocksource/drivers/fttmr010: Implement delay timer
        clocksource/drivers: Add timer-of common init routine
        clocksource/drivers/tcb_clksrc: Save timer context on suspend/resume
        ...
      1b044f1c
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · e0f3e8f1
      Linus Torvalds authored
      Pull s390 updates from Martin Schwidefsky:
       "The bulk of the s390 patches for 4.13. Some new things but mostly bug
        fixes and cleanups. Noteworthy changes:
      
         - The SCM block driver is converted to blk-mq
      
         - Switch s390 to 5 level page tables. The virtual address space for a
           user space process can now have up to 16EB-4KB.
      
         - Introduce a ELF phdr flag for qemu to avoid the global
           vm.alloc_pgste which forces all processes to large page tables
      
         - A couple of PCI improvements to improve error recovery
      
         - Included is the merge of the base support for proper machine checks
           for KVM"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (52 commits)
        s390/dasd: Fix faulty ENODEV for RO sysfs attribute
        s390/pci: recognize name clashes with uids
        s390/pci: provide more debug information
        s390/pci: fix handling of PEC 306
        s390/pci: improve pci hotplug
        s390/pci: introduce clp_get_state
        s390/pci: improve error handling during fmb (de)registration
        s390/pci: improve unreg_ioat error handling
        s390/pci: improve error handling during interrupt deregistration
        s390/pci: don't cleanup in arch_setup_msi_irqs
        KVM: s390: Backup the guest's machine check info
        s390/nmi: s390: New low level handling for machine check happening in guest
        s390/fpu: export save_fpu_regs for all configs
        s390/kvm: avoid global config of vm.alloc_pgste=1
        s390: rename struct psw_bits members
        s390: rename psw_bits enums
        s390/mm: use correct address space when enabling DAT
        s390/cio: introduce io_subchannel_type
        s390/ipl: revert Load Normal semantics for LPAR CCW-type re-IPL
        s390/dumpstack: remove raw stack dump
        ...
      e0f3e8f1
    • Linus Torvalds's avatar
      Merge branch 'parisc-4.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · e5859eb8
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
       "Main changes are:
      
         - Added support to the parisc dma functions to return DMA_ERROR_CODE
           if DMA isn't possible. This fixes a long standing kernel crash if
           parport_pc is enabled (by Thomas Bogendoerfer, marked for stable
           series).
      
         - Use the compat_sys_keyctl() in compat mode (by Eric Biggers, marked
           for stable series).
      
         - Initial support for the Page Deallocation Table (PDT) which is
           maintained by firmware and holds the list of memory addresses which
           had physical errors. By checking that list we can prevent Linux to
           use those broken memory areas.
      
         - Ensure IRQs are off in switch_mm().
      
         - Report SIGSEGV instead of SIGBUS when running out of stack.
      
         - Mark the cr16 clocksource stable on single-socket and single-core
           machines"
      
      * 'parisc-4.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: DMA API: return error instead of BUG_ON for dma ops on non dma devs
        parisc: Report SIGSEGV instead of SIGBUS when running out of stack
        parisc: use compat_sys_keyctl()
        parisc: Don't hardcode PSW values in hpmc code
        parisc: Don't hardcode PSW values in gsc_*() functions
        parisc: Avoid zeroing gr[0] in fixup_exception()
        parisc/mm: Ensure IRQs are off in switch_mm()
        parisc: Add Page Deallocation Table (PDT) support
        parisc: Enhance detection of synchronous cr16 clocksources
        parisc: Drop per_cpu uaccess related exception_data struct
        parisc: Inline trivial exception code in lusercopy.S
      e5859eb8
    • Linus Torvalds's avatar
      Merge tag 'microblaze-4.13-rc1' of git://git.monstr.eu/linux-2.6-microblaze · 058e88d3
      Linus Torvalds authored
      Pull microblaze updates from Michal Simek:
      
       - timer fix
      
       - use simplified macro in dma.c
      
       - wire-up new syscall
      
       - remove asp-generic wrappers
      
       - fix MMU table handling
      
       - defconfig updates
      
       - low-level entry.S changes
      
      * tag 'microblaze-4.13-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Fix MSR flags when returning from exception
        microblaze: Separate GP registers from MSR handling
        microblaze: Enabling CONFIG_BRIDGE in mmu_defconfig
        microblaze: Enabling CONFIGS related to MTD
        microblaze: Update defconfigs
        microblaze: mm: Flush TLB to ensure correct mapping when higmem ON
        microblaze: remove asm-generic wrapper headers
        microblaze: wire up statx syscall
        microblaze: Set ->min_delta_ticks and ->max_delta_ticks for timer
        microblaze: use sg_phys()
      058e88d3
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v4.13-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 241e5e6f
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
        - NuBus improvements and cleanups
      
        - defconfig updates
      
        - Fix debugger syscall restart interactions, leading to the global
          removal of ptrace_signal_deliver()
      
      * tag 'm68k-for-v4.13-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Remove ptrace_signal_deliver
        m68k/defconfig: Update defconfigs for v4.12-rc1
        nubus: Fix pointer validation
        nubus: Remove slot zero probe
      241e5e6f
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7a69f9c6
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Continued work to add support for 5-level paging provided by future
           Intel CPUs. In particular we switch the x86 GUP code to the generic
           implementation. (Kirill A. Shutemov)
      
         - Continued work to add PCID CPU support to native kernels as well.
           In this round most of the focus is on reworking/refreshing the TLB
           flush infrastructure for the upcoming PCID changes. (Andy
           Lutomirski)"
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
        x86/mm: Delete a big outdated comment about TLB flushing
        x86/mm: Don't reenter flush_tlb_func_common()
        x86/KASLR: Fix detection 32/64 bit bootloaders for 5-level paging
        x86/ftrace: Exclude functions in head64.c from function-tracing
        x86/mmap, ASLR: Do not treat unlimited-stack tasks as legacy mmap
        x86/mm: Remove reset_lazy_tlbstate()
        x86/ldt: Simplify the LDT switching logic
        x86/boot/64: Put __startup_64() into .head.text
        x86/mm: Add support for 5-level paging for KASLR
        x86/mm: Make kernel_physical_mapping_init() support 5-level paging
        x86/mm: Add sync_global_pgds() for configuration with 5-level paging
        x86/boot/64: Add support of additional page table level during early boot
        x86/boot/64: Rename init_level4_pgt and early_level4_pgt
        x86/boot/64: Rewrite startup_64() in C
        x86/boot/compressed: Enable 5-level paging during decompression stage
        x86/boot/efi: Define __KERNEL32_CS GDT on 64-bit configurations
        x86/boot/efi: Fix __KERNEL_CS definition of GDT entry on 64-bit configurations
        x86/boot/efi: Cleanup initialization of GDT entries
        x86/asm: Fix comment in return_from_SYSCALL_64()
        x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation
        ...
      7a69f9c6
    • Linus Torvalds's avatar
      Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9bc088ab
      Linus Torvalds authored
      Pull x86 microcode updates from Ingo Molnar:
       "The main changes are a fix early microcode application for
        resume-from-RAM, plus a 32-bit initrd placement fix - by Borislav
        Petkov"
      
      * 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/microcode: Make a couple of symbols static
        x86/microcode/intel: Save pointer to ucode patch for early AP loading
        x86/microcode: Look for the initrd at the correct address on 32-bit
      9bc088ab
    • Linus Torvalds's avatar
      Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e1449007
      Linus Torvalds authored
      Pull x86 hyperv updates from Ingo Molnar:
       "Avoid boot time TSC calibration on Hyper-V hosts, to improve
        calibration robustness. (Vitaly Kuznetsov)"
      
      * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/hyperv: Read TSC frequency from a synthetic MSR
        x86/hyperv: Check frequency MSRs presence according to the specification
      e1449007
    • Linus Torvalds's avatar
      Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e6529f6f
      Linus Torvalds authored
      Pull x86 debug update from Ingo Molnar:
       "A single fix for an off-by one bug in test_nmi_ipi() that probably
        doesn't matter in practice"
      
      * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/nmi: Fix timeout test in test_nmi_ipi()
      e6529f6f
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6553698b
      Linus Torvalds authored
      Pull x86 cleanups from Ingo Molnar:
       "Two small cleanups"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/paravirt: Remove unnecessary return from void function
        x86/boot: Add missing strchr() declaration
      6553698b
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 25e09ca5
      Linus Torvalds authored
      Pull x86 boot updates from Ingo Molnar:
       "The main changes in this cycle were KASLR improvements for rare
        environments with special boot options, by Baoquan He. Also misc
        smaller changes/cleanups"
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/debug: Extend the lower bound of crash kernel low reservations
        x86/boot: Remove unused copy_*_gs() functions
        x86/KASLR: Use the right memcpy() implementation
        Documentation/kernel-parameters.txt: Update 'memmap=' boot option description
        x86/KASLR: Handle the memory limit specified by the 'memmap=' and 'mem=' boot options
        x86/KASLR: Parse all 'memmap=' boot option entries
      25e09ca5
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 48b5259c
      Linus Torvalds authored
      Pull x86 asm updates from Ingo Molnar:
       "A single commit micro-optimizing short user copies on certain Intel
        CPUs"
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings
      48b5259c
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2a275382
      Linus Torvalds authored
      Pull x86 apic updates from Ingo Molnar:
       "Janitorial changes: removal of an unused function plus __init
        annotations"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Make arch_init_msi/htirq_domain __init
        x86/apic: Make init_legacy_irqs() __init
        x86/ioapic: Remove unused IO_APIC_irq_trigger() function
      2a275382
    • Linus Torvalds's avatar
      Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 59b60185
      Linus Torvalds authored
      Pull nohz updates from Ingo Molnar:
       "The main changes in this cycle relate to fixing another bad (but
        sporadic and hard to detect) interaction between the dynticks
        scheduler tick and hrtimers, plus related improvements to better
        detection and handling of similar problems - by Frédéric Weisbecker"
      
      * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        nohz: Fix spurious warning when hrtimer and clockevent get out of sync
        nohz: Fix buggy tick delay on IRQ storms
        nohz: Reset next_tick cache even when the timer has no regs
        nohz: Fix collision between tick and other hrtimers, again
        nohz: Add hrtimer sanity check
      59b60185
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9bd42183
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Add the SYSTEM_SCHEDULING bootup state to move various scheduler
           debug checks earlier into the bootup. This turns silent and
           sporadically deadly bugs into nice, deterministic splats. Fix some
           of the splats that triggered. (Thomas Gleixner)
      
         - A round of restructuring and refactoring of the load-balancing and
           topology code (Peter Zijlstra)
      
         - Another round of consolidating ~20 of incremental scheduler code
           history: this time in terms of wait-queue nomenclature. (I didn't
           get much feedback on these renaming patches, and we can still
           easily change any names I might have misplaced, so if anyone hates
           a new name, please holler and I'll fix it.) (Ingo Molnar)
      
         - sched/numa improvements, fixes and updates (Rik van Riel)
      
         - Another round of x86/tsc scheduler clock code improvements, in hope
           of making it more robust (Peter Zijlstra)
      
         - Improve NOHZ behavior (Frederic Weisbecker)
      
         - Deadline scheduler improvements and fixes (Luca Abeni, Daniel
           Bristot de Oliveira)
      
         - Simplify and optimize the topology setup code (Lauro Ramos
           Venancio)
      
         - Debloat and decouple scheduler code some more (Nicolas Pitre)
      
         - Simplify code by making better use of llist primitives (Byungchul
           Park)
      
         - ... plus other fixes and improvements"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (103 commits)
        sched/cputime: Refactor the cputime_adjust() code
        sched/debug: Expose the number of RT/DL tasks that can migrate
        sched/numa: Hide numa_wake_affine() from UP build
        sched/fair: Remove effective_load()
        sched/numa: Implement NUMA node level wake_affine()
        sched/fair: Simplify wake_affine() for the single socket case
        sched/numa: Override part of migrate_degrades_locality() when idle balancing
        sched/rt: Move RT related code from sched/core.c to sched/rt.c
        sched/deadline: Move DL related code from sched/core.c to sched/deadline.c
        sched/cpuset: Only offer CONFIG_CPUSETS if SMP is enabled
        sched/fair: Spare idle load balancing on nohz_full CPUs
        nohz: Move idle balancer registration to the idle path
        sched/loadavg: Generalize "_idle" naming to "_nohz"
        sched/core: Drop the unused try_get_task_struct() helper function
        sched/fair: WARN() and refuse to set buddy when !se->on_rq
        sched/debug: Fix SCHED_WARN_ON() to return a value on !CONFIG_SCHED_DEBUG as well
        sched/wait: Disambiguate wq_entry->task_list and wq_head->task_list naming
        sched/wait: Move bit_wait_table[] and related functionality from sched/core.c to sched/wait_bit.c
        sched/wait: Split out the wait_bit*() APIs from <linux/wait.h> into <linux/wait_bit.h>
        sched/wait: Re-adjust macro line continuation backslashes in <linux/wait.h>
        ...
      9bd42183
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7447d562
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "Most of the changes are for tooling, the main changes in this cycle were:
      
         - Improve Intel-PT hardware tracing support, both on the kernel and
           on the tooling side: PTWRITE instruction support, power events for
           C-state tracing, etc. (Adrian Hunter)
      
         - Add support to measure SMI cost to the x86 architecture, with
           tooling support in 'perf stat' (Kan Liang)
      
         - Support function filtering in 'perf ftrace', plus related
           improvements (Namhyung Kim)
      
         - Allow adding and removing fields to the default 'perf script'
           columns, using + or - as field prefixes to do so (Andi Kleen)
      
         - Allow resolving the DSO name with 'perf script -F brstack{sym,off},dso'
           (Mark Santaniello)
      
         - Add perf tooling unwind support for PowerPC (Paolo Bonzini)
      
         - ... and various other improvements as well"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (84 commits)
        perf auxtrace: Add CPU filter support
        perf intel-pt: Do not use TSC packets for calculating CPU cycles to TSC
        perf intel-pt: Update documentation to include new ptwrite and power events
        perf intel-pt: Add example script for power events and PTWRITE
        perf intel-pt: Synthesize new power and "ptwrite" events
        perf intel-pt: Move code in intel_pt_synth_events() to simplify attr setting
        perf intel-pt: Factor out intel_pt_set_event_name()
        perf intel-pt: Tidy messages into called function intel_pt_synth_event()
        perf intel-pt: Tidy Intel PT evsel lookup into separate function
        perf intel-pt: Join needlessly wrapped lines
        perf intel-pt: Remove unused instructions_sample_period
        perf intel-pt: Factor out common code synthesizing event samples
        perf script: Add synthesized Intel PT power and ptwrite events
        perf/x86/intel: Constify the 'lbr_desc[]' array and make a function static
        perf script: Add 'synth' field for synthesized event payloads
        perf auxtrace: Add itrace option to output power events
        perf auxtrace: Add itrace option to output ptwrite events
        tools include: Add byte-swapping macros to kernel.h
        perf script: Add 'synth' event type for synthesized events
        x86/insn: perf tools: Add new ptwrite instruction
        ...
      7447d562
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 892ad5ac
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Add CONFIG_REFCOUNT_FULL=y to allow the disabling of the 'full'
           (robustness checked) refcount_t implementation with slightly lower
           runtime overhead. (Kees Cook)
      
           The lighter weight variant is the default. The two variants use the
           same API. Having this variant was a precondition by some
           maintainers to merge refcount_t cleanups.
      
         - Add lockdep support for rtmutexes (Peter Zijlstra)
      
         - liblockdep fixes and improvements (Sasha Levin, Ben Hutchings)
      
         - ... misc fixes and improvements"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits)
        locking/refcount: Remove the half-implemented refcount_sub() API
        locking/refcount: Create unchecked atomic_t implementation
        locking/rtmutex: Don't initialize lockdep when not required
        locking/selftest: Add RT-mutex support
        locking/selftest: Remove the bad unlock ordering test
        rt_mutex: Add lockdep annotations
        MAINTAINERS: Claim atomic*_t maintainership
        locking/x86: Remove the unused atomic_inc_short() methd
        tools/lib/lockdep: Remove private kernel headers
        tools/lib/lockdep: Hide liblockdep output from test results
        tools/lib/lockdep: Add dummy current_gfp_context()
        tools/include: Add IS_ERR_OR_NULL to err.h
        tools/lib/lockdep: Add empty __is_[module,kernel]_percpu_address
        tools/lib/lockdep: Include err.h
        tools/include: Add (mostly) empty include/linux/sched/mm.h
        tools/lib/lockdep: Use LDFLAGS
        tools/lib/lockdep: Remove double-quotes from soname
        tools/lib/lockdep: Fix object file paths used in an out-of-tree build
        tools/lib/lockdep: Fix compilation for 4.11
        tools/lib/lockdep: Don't mix fd-based and stream IO
        ...
      892ad5ac