17 Sep, 2019

1 commit

  • Pull scheduler updates from Ingo Molnar:

    - MAINTAINERS: Add Mark Rutland as perf submaintainer, Juri Lelli and
    Vincent Guittot as scheduler submaintainers. Add Dietmar Eggemann,
    Steven Rostedt, Ben Segall and Mel Gorman as scheduler reviewers.

    As perf and the scheduler is getting bigger and more complex,
    document the status quo of current responsibilities and interests,
    and spread the review pain^H^H^H^H fun via an increase in the Cc:
    linecount generated by scripts/get_maintainer.pl. :-)

    - Add another series of patches that brings the -rt (PREEMPT_RT) tree
    closer to mainline: split the monolithic CONFIG_PREEMPT dependencies
    into a new CONFIG_PREEMPTION category that will allow the eventual
    introduction of CONFIG_PREEMPT_RT. Still a few more hundred patches
    to go though.

    - Extend the CPU cgroup controller with uclamp.min and uclamp.max to
    allow the finer shaping of CPU bandwidth usage.

    - Micro-optimize energy-aware wake-ups from O(CPUS^2) to O(CPUS).

    - Improve the behavior of high CPU count, high thread count
    applications running under cpu.cfs_quota_us constraints.

    - Improve balancing with SCHED_IDLE (SCHED_BATCH) tasks present.

    - Improve CPU isolation housekeeping CPU allocation NUMA locality.

    - Fix deadline scheduler bandwidth calculations and logic when cpusets
    rebuilds the topology, or when it gets deadline-throttled while it's
    being offlined.

    - Convert the cpuset_mutex to percpu_rwsem, to allow it to be used from
    setscheduler() system calls without creating global serialization.
    Add new synchronization between cpuset topology-changing events and
    the deadline acceptance tests in setscheduler(), which were broken
    before.

    - Rework the active_mm state machine to be less confusing and more
    optimal.

    - Rework (simplify) the pick_next_task() slowpath.

    - Improve load-balancing on AMD EPYC systems.

    - ... and misc cleanups, smaller fixes and improvements - please see
    the Git log for more details.

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
    sched/psi: Correct overly pessimistic size calculation
    sched/fair: Speed-up energy-aware wake-ups
    sched/uclamp: Always use 'enum uclamp_id' for clamp_id values
    sched/uclamp: Update CPU's refcount on TG's clamp changes
    sched/uclamp: Use TG's clamps to restrict TASK's clamps
    sched/uclamp: Propagate system defaults to the root group
    sched/uclamp: Propagate parent clamps
    sched/uclamp: Extend CPU's cgroup controller
    sched/topology: Improve load balancing on AMD EPYC systems
    arch, ia64: Make NUMA select SMP
    sched, perf: MAINTAINERS update, add submaintainers and reviewers
    sched/fair: Use rq_lock/unlock in online_fair_sched_group
    cpufreq: schedutil: fix equation in comment
    sched: Rework pick_next_task() slow-path
    sched: Allow put_prev_task() to drop rq->lock
    sched/fair: Expose newidle_balance()
    sched: Add task_struct pointer to sched_class::set_curr_task
    sched: Rework CPU hotplug task selection
    sched/{rt,deadline}: Fix set_next_task vs pick_next_task
    sched: Fix kerneldoc comment for ia64_set_curr_task
    ...

    Linus Torvalds
     

10 Aug, 2019

1 commit

  • This commit adds RCU-reader checks to list_for_each_entry_rcu() and
    hlist_for_each_entry_rcu(). These checks are optional, and are indicated
    by a lockdep expression passed to a new optional argument to these two
    macros. If this optional lockdep expression is omitted, these two macros
    act as before, checking for an RCU read-side critical section.

    Signed-off-by: Joel Fernandes (Google)
    [ paulmck: Update to eliminate return within macro and update comment. ]
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     

02 Aug, 2019

1 commit

  • The rcu_dereference_raw_notrace() API name is confusing. It is equivalent
    to rcu_dereference_raw() except that it also does sparse pointer checking.

    There are only a few users of rcu_dereference_raw_notrace(). This patches
    renames all of them to be rcu_dereference_raw_check() with the "_check()"
    indicating sparse checking.

    Signed-off-by: Joel Fernandes (Google)
    [ paulmck: Fix checkpatch warnings about parentheses. ]
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     

01 Aug, 2019

1 commit

  • CONFIG_PREEMPTION is selected by CONFIG_PREEMPT and by
    CONFIG_PREEMPT_RT. Both PREEMPT and PREEMPT_RT require the same
    functionality which today depends on CONFIG_PREEMPT.

    Switch the conditionals in RCU to use CONFIG_PREEMPTION.

    That's the first step towards RCU on RT. The further tweaks are work in
    progress. This neither touches the selftest bits which need a closer look
    by Paul.

    Signed-off-by: Thomas Gleixner
    Acked-by: Peter Zijlstra (Intel)
    Cc: Linus Torvalds
    Cc: Masami Hiramatsu
    Cc: Paolo Bonzini
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/r/20190726212124.210156346@linutronix.de
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

29 Jun, 2019

1 commit

  • …k/linux-rcu into core/rcu

    Pull rcu/next + tools/memory-model changes from Paul E. McKenney:

    - RCU flavor consolidation cleanups and optmizations
    - Documentation updates
    - Miscellaneous fixes
    - SRCU updates
    - RCU-sync flavor consolidation
    - Torture-test updates
    - Linux-kernel memory-consistency-model updates, most notably the addition of plain C-language accesses

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

14 Jun, 2019

3 commits

  • Quoting Paul [1]:

    "Given that a quick (and perhaps error-prone) search of the uses
    of rcu_assign_pointer() in v5.1 didn't find a single use of the
    return value, let's please instead change the documentation and
    implementation to eliminate the return value."

    [1] https://lkml.kernel.org/r/20190523135013.GL28207@linux.ibm.com

    Signed-off-by: Andrea Parri
    Cc: "Paul E. McKenney"
    Cc: Josh Triplett
    Cc: Steven Rostedt
    Cc: Mathieu Desnoyers
    Cc: Lai Jiangshan
    Cc: Joel Fernandes
    Cc: rcu@vger.kernel.org
    Cc: Peter Zijlstra
    Cc: Will Deacon
    Cc: Mark Rutland
    Cc: Matthew Wilcox
    Cc: Sasha Levin
    Signed-off-by: Paul E. McKenney

    Andrea Parri
     
  • When debugging options are turned on, the rcu_read_lock() function
    might not be inlined. This results in lockdep's print_lock() function
    printing "rcu_read_lock+0x0/0x70" instead of rcu_read_lock()'s caller.
    For example:

    [ 10.579995] =============================
    [ 10.584033] WARNING: suspicious RCU usage
    [ 10.588074] 4.18.0.memcg_v2+ #1 Not tainted
    [ 10.593162] -----------------------------
    [ 10.597203] include/linux/rcupdate.h:281 Illegal context switch in
    RCU read-side critical section!
    [ 10.606220]
    [ 10.606220] other info that might help us debug this:
    [ 10.606220]
    [ 10.614280]
    [ 10.614280] rcu_scheduler_active = 2, debug_locks = 1
    [ 10.620853] 3 locks held by systemd/1:
    [ 10.624632] #0: (____ptrval____) (&type->i_mutex_dir_key#5){.+.+}, at: lookup_slow+0x42/0x70
    [ 10.633232] #1: (____ptrval____) (rcu_read_lock){....}, at: rcu_read_lock+0x0/0x70
    [ 10.640954] #2: (____ptrval____) (rcu_read_lock){....}, at: rcu_read_lock+0x0/0x70

    These "rcu_read_lock+0x0/0x70" strings are not providing any useful
    information. This commit therefore forces inlining of the rcu_read_lock()
    function so that rcu_read_lock()'s caller is instead shown.

    Signed-off-by: Waiman Long
    Signed-off-by: Paul E. McKenney

    Waiman Long
     
  • Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

04 Jun, 2019

1 commit

  • Herbert Xu pointed out that commit bb73c52bad36 ("rcu: Don't disable
    preemption for Tiny and Tree RCU readers") was incorrect in making the
    preempt_disable/enable() be conditional on CONFIG_PREEMPT_COUNT.

    If CONFIG_PREEMPT_COUNT isn't enabled, the preemption enable/disable is
    a no-op, but still is a compiler barrier.

    And RCU locking still _needs_ that compiler barrier.

    It is simply fundamentally not true that RCU locking would be a complete
    no-op: we still need to guarantee (for example) that things that can
    trap and cause preemption cannot migrate into the RCU locked region.

    The way we do that is by making it a barrier.

    See for example commit 386afc91144b ("spinlocks and preemption points
    need to be at least compiler barriers") from back in 2013 that had
    similar issues with spinlocks that become no-ops on UP: they must still
    constrain the compiler from moving other operations into the critical
    region.

    Now, it is true that a lot of RCU operations already use READ_ONCE() and
    WRITE_ONCE() (which in practice likely would never be re-ordered wrt
    anything remotely interesting), but it is also true that that is not
    globally the case, and that it's not even necessarily always possible
    (ie bitfields etc).

    Reported-by: Herbert Xu
    Fixes: bb73c52bad36 ("rcu: Don't disable preemption for Tiny and Tree RCU readers")
    Cc: stable@kernel.org
    Cc: Boqun Feng
    Cc: Paul E. McKenney
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

29 May, 2019

1 commit

  • This commit makes the kfree_rcu() macro's semantics be consistent
    with the likes of kfree() by adding a check for NULL pointers, so
    that kfree_rcu(NULL, ...) is a no-op.

    Reported-by: Andriy Shevchenko
    Reported-by: Christoph Hellwig
    Signed-off-by: Paul E. McKenney
    Reviewed-by: Andriy Shevchenko

    Paul E. McKenney
     

27 Mar, 2019

1 commit

  • The rcu_head_after_call_rcu() function reads the rhp->func pointer twice,
    which can result in a false-positive WARN_ON_ONCE() if the callback
    were passed to call_rcu() between the two reads. Although racing
    rcu_head_after_call_rcu() with call_rcu() is to be a dubious use case
    (the return value is not reliable in that case), intermittent and
    irreproducible warnings are also quite dubious. This commit therefore
    uses a single READ_ONCE() to pick up the value of rhp->func once, then
    tests that value twice, thus guaranteeing consistent processing within
    rcu_head_after_call_rcu()().

    Neverthless, racing rcu_head_after_call_rcu() with call_rcu() is still
    a dubious use case.

    Signed-off-by: Neeraj Upadhyay
    [ paulmck: Add blank line after declaration per checkpatch.pl. ]
    Signed-off-by: Paul E. McKenney

    Neeraj Upadhyay
     

10 Feb, 2019

2 commits


26 Jan, 2019

4 commits

  • The rcu_assign_pointer() function currently doesn't do any sparse checking
    on the assigned-to pointer. So its possible that a pointer that is
    not __rcu annotated is assigned with rcu_assign_pointer without sparse
    complaints. Because rcu_dereference() already does such checking,
    this commit makes rcu_assign_pointer() to do the same. The extra
    error could be helpful in cases where an RCU pointer is assigned with
    rcu_assign_pointer() but not annotated with __rcu.

    This doesn't generate any code in the normal case because __CHECKER__ is
    defined only in the context of sparse.

    This commit also renames rcu_dereference_sparse() to rcu_check_parse()
    since the checking now happens not only during derereferencing but also
    during assignment.

    Test: Introduced an rcu_assign_pointer in code and checked the output of
    sparse with and without this change. The change correctly causes sparse
    to throw an error.

    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     
  • The name rcu_check_callbacks() arguably made sense back in the early
    2000s when RCU was quite a bit simpler than it is today, but it has
    become quite misleading, especially with the advent of dyntick-idle
    and NO_HZ_FULL. The rcu_check_callbacks() function is RCU's hook into
    the scheduling-clock interrupt, and is now but one of many ways that
    callbacks get promoted to invocable state.

    This commit therefore changes the name to rcu_sched_clock_irq(),
    which is the same number of characters and clearly indicates this
    function's relation to the rest of the Linux kernel. In addition, for
    the sake of consistency, rcu_flavor_check_callbacks() is also renamed
    to rcu_flavor_sched_clock_irq().

    While in the area, the header comments for both functions are reworked.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • This commit adds the missing asterisks required to make Sphinx pick up
    the current header comments for these two functions.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • None of synchronize_rcu_bh, synchronize_rcu_bh_expedited, call_rcu_bh,
    rcu_barrier_bh, synchronize_sched, synchronize_sched_expedited,
    call_rcu_sched, rcu_barrier_sched, get_state_synchronize_sched, and
    cond_synchronize_sched are actually used. This commit therefore removes
    their trivial wrapper-function definitions.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

31 Aug, 2018

9 commits

  • This commit adds rcu_head_init() and rcu_head_after_call_rcu() functions
    to help RCU users detect when another CPU has passed the specified
    rcu_head structure and function to call_rcu(). The rcu_head_init()
    should be invoked before making the structure visible to RCU readers,
    and then the rcu_head_after_call_rcu() may be invoked from within
    an RCU read-side critical section on an rcu_head structure that
    was obtained during a traversal of the data structure in question.
    The rcu_head_after_call_rcu() function will return true if the rcu_head
    structure has already been passed (with the specified function) to
    call_rcu(), otherwise it will return false.

    If rcu_head_init() has not been invoked on the rcu_head structure
    or if the rcu_head (AKA callback) has already been invoked, then
    rcu_head_after_call_rcu() will do WARN_ON_ONCE().

    Reported-by: NeilBrown
    Signed-off-by: Paul E. McKenney
    [ paulmck: Apply neilb naming feedback. ]

    Paul E. McKenney
     
  • Because RCU-tasks exists only in PREEMPT kernels and because RCU-sched
    no longer exists in PREEMPT kernels, it is no longer necessary for the
    rcu_note_voluntary_context_switch() macro to do anything for !PREEMPT
    kernels. This commit therefore removes !PREEMPT-related code from
    this macro, namely, the rcu_all_qs().

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • This commit saves a few lines by consolidating the RCU-sched function
    definitions at the end of include/linux/rcupdate.h. This consolidation
    also makes it easier to remove them all when the time comes.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • This commit saves a few lines by consolidating the RCU-bh function
    definitions at the end of include/linux/rcupdate.h. This consolidation
    also makes it easier to remove them all when the time comes.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • This commit renames Tiny RCU functions so that the lowest level of
    functionality is RCU (e.g., synchronize_rcu()) rather than RCU-sched
    (e.g., synchronize_sched()). This provides greater naming compatibility
    with Tree RCU, which will in turn permit more LoC removal once
    the RCU-sched and RCU-bh update-side API is removed.

    Signed-off-by: Paul E. McKenney
    [ paulmck: Fix Tiny call_rcu()'s EXPORT_SYMBOL() in response to a bug
    report from kbuild test robot. ]

    Paul E. McKenney
     
  • Now that RCU-preempt knows about preemption disabling, its implementation
    of synchronize_rcu() works for synchronize_sched(), and likewise for the
    other RCU-sched update-side API members. This commit therefore confines
    the RCU-sched update-side code to CONFIG_PREEMPT=n builds, and defines
    RCU-sched's update-side API members in terms of those of RCU-preempt.

    This means that any given build of the Linux kernel has only one
    update-side flavor of RCU, namely RCU-preempt for CONFIG_PREEMPT=y builds
    and RCU-sched for CONFIG_PREEMPT=n builds. This in turn means that kernels
    built with CONFIG_RCU_NOCB_CPU=y have only one rcuo kthread per CPU.

    Signed-off-by: Paul E. McKenney
    Cc: Andi Kleen

    Paul E. McKenney
     
  • This commit updates comments and help text to account for the fact that
    RCU-bh update-side functions are now simple wrappers for their RCU or
    RCU-sched counterparts.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Now that the main RCU API knows about softirq disabling and softirq's
    quiescent states, the RCU-bh update code can be dispensed with.
    This commit therefore removes the RCU-bh update-side implementation and
    defines RCU-bh's update-side API in terms of that of either RCU-preempt or
    RCU-sched, depending on the setting of the CONFIG_PREEMPT Kconfig option.

    In kernels built with CONFIG_RCU_NOCB_CPU=y this has the knock-on effect
    of reducing by one the number of rcuo kthreads per CPU.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

13 Jul, 2018

4 commits

  • The naming and comments associated with some RCU-tasks code make
    the faulty assumption that context switches due to cond_resched()
    are voluntary. As several people pointed out, this is not the case.
    This commit therefore updates function names and comments to better
    reflect current reality.

    Reported-by: Byungchul Park
    Reported-by: Joel Fernandes
    Reported-by: Steven Rostedt
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The code example at rcupdate.h currently produce lots of warnings:

    ./include/linux/rcupdate.h:572: WARNING: Unexpected indentation.
    ./include/linux/rcupdate.h:576: WARNING: Unexpected indentation.
    ./include/linux/rcupdate.h:580: WARNING: Block quote ends without a blank line; unexpected unindent.
    ./include/linux/rcupdate.h:582: WARNING: Block quote ends without a blank line; unexpected unindent.
    ./include/linux/rcupdate.h:582: WARNING: Inline literal start-string without end-string.

    This commit therefore changes it to a code-block.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Paul E. McKenney

    Mauro Carvalho Chehab
     
  • We expect a quiescent state of TASKS_RCU when cond_resched_tasks_rcu_qs()
    is called, no matter whether it actually be scheduled or not. However,
    it currently doesn't report the quiescent state when the task enters
    into __schedule() as it's called with preempt = true. So make it report
    the quiescent state unconditionally when cond_resched_tasks_rcu_qs() is
    called.

    And in TINY_RCU, even though the quiescent state of rcu_bh also should
    be reported when the tick interrupt comes from user, it doesn't. So make
    it reported.

    Lastly in TREE_RCU, rcu_note_voluntary_context_switch() should be
    reported when the tick interrupt comes from not only user but also idle,
    as an extended quiescent state.

    Signed-off-by: Byungchul Park
    Signed-off-by: Paul E. McKenney
    [ paulmck: Simplify rcutiny portion given no RCU-tasks for !PREEMPT. ]

    Byungchul Park
     
  • Because rcu_read_unlock_special() is no longer used outside of
    kernel/rcu/tree_plugin.h, this commit makes it static.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

10 Jun, 2018

1 commit

  • Since commit b4abf91047cf ("rtmutex: Make wait_lock irq safe") the
    explanation in rcu_read_unlock() documentation about irq unsafe rtmutex
    wait_lock is no longer valid.

    Remove it to prevent kernel developers reading the documentation to rely on
    it.

    Suggested-by: Eric W. Biederman
    Signed-off-by: Anna-Maria Gleixner
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Paul E. McKenney
    Acked-by: "Eric W. Biederman"
    Cc: bigeasy@linutronix.de
    Link: https://lkml.kernel.org/r/20180525090507.22248-2-anna-maria@linutronix.de

    Anna-Maria Gleixner
     

23 May, 2018

1 commit

  • The x86/mtrr code does horrific things because hardware. It uses
    stop_machine_from_inactive_cpu(), which does a wakeup (of the stopper
    thread on another CPU), which uses RCU, all before the CPU is onlined.

    RCU complains about this, because wakeups use RCU and RCU does
    (rightfully) not consider offline CPUs for grace-periods.

    Fix this by initializing RCU way early in the MTRR case.

    Tested-by: Mike Galbraith
    Signed-off-by: Peter Zijlstra
    Signed-off-by: Paul E. McKenney
    [ paulmck: Add !SMP support, per 0day Test Robot report. ]

    Peter Zijlstra
     

16 May, 2018

1 commit

  • Commit e31d28b6ab8f ("trace: Eliminate cond_resched_rcu_qs() in favor
    of cond_resched()") substituted cond_resched() for the earlier call
    to cond_resched_rcu_qs(). However, the new-age cond_resched() does
    not do anything to help RCU-tasks grace periods because (1) RCU-tasks
    is only enabled when CONFIG_PREEMPT=y and (2) cond_resched() is a
    complete no-op when preemption is enabled. This situation results
    in hangs when running the trace benchmarks.

    A number of potential fixes were discussed on LKML
    (https://lkml.kernel.org/r/20180224151240.0d63a059@vmware.local.home),
    including making cond_resched() not be a no-op; making cond_resched()
    not be a no-op, but only when running tracing benchmarks; reverting
    the aforementioned commit (which works because cond_resched_rcu_qs()
    does provide an RCU-tasks quiescent state; and adding a call to the
    scheduler/RCU rcu_note_voluntary_context_switch() function. All were
    deemed unsatisfactory, either due to added cond_resched() overhead or
    due to magic functions inviting cargo culting.

    This commit renames cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs(),
    which provides a clear hint as to what this function is doing and
    why and where it should be used, and then replaces the call to
    cond_resched() with cond_resched_tasks_rcu_qs() in the trace benchmark's
    benchmark_event_kthread() function.

    Reported-by: Steven Rostedt
    Signed-off-by: Paul E. McKenney
    Tested-by: Nicholas Piggin

    Paul E. McKenney
     

21 Feb, 2018

1 commit

  • The current (and implicit) comment header for init_rcu_head() and
    destroy_rcu_head() incorrectly says that they are not needed for
    statically allocated rcu_head structures. This commit therefore
    fixes this comment.

    Reported-by: Bart Van Assche
    Signed-off-by: Paul E. McKenney
    Reviewed-by: Bart Van Assche
    Reviewed-by: Leon Romanovsky

    Paul E. McKenney
     

12 Dec, 2017

1 commit


05 Dec, 2017

2 commits


24 Oct, 2017

1 commit

  • READ_ONCE() now has an implicit smp_read_barrier_depends() call, so it
    can be used instead of lockless_dereference() without any change in
    semantics.

    Signed-off-by: Will Deacon
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1508840570-22169-4-git-send-email-will.deacon@arm.com
    Signed-off-by: Ingo Molnar

    Will Deacon
     

20 Oct, 2017

1 commit


08 Sep, 2017

1 commit

  • Pull SCSI updates from James Bottomley:
    "This is mostly updates of the usual suspects: lpfc, qla2xxx, hisi_sas,
    megaraid_sas, zfcp and a host of minor updates.

    The major driver change here is the elimination of the block based
    cciss driver in favour of the SCSI based hpsa driver (which now drives
    all the legacy cases cciss used to be required for). Plus a reset
    handler clean up and the redo of the SAS SMP handler to use bsg lib"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (279 commits)
    scsi: scsi-mq: Always unprepare before requeuing a request
    scsi: Show .retries and .jiffies_at_alloc in debugfs
    scsi: Improve requeuing behavior
    scsi: Call scsi_initialize_rq() for filesystem requests
    scsi: qla2xxx: Reset the logo flag, after target re-login.
    scsi: qla2xxx: Fix slow mem alloc behind lock
    scsi: qla2xxx: Clear fc4f_nvme flag
    scsi: qla2xxx: add missing includes for qla_isr
    scsi: qla2xxx: Fix an integer overflow in sysfs code
    scsi: aacraid: report -ENOMEM to upper layer from aac_convert_sgraw2()
    scsi: aacraid: get rid of one level of indentation
    scsi: aacraid: fix indentation errors
    scsi: storvsc: fix memory leak on ring buffer busy
    scsi: scsi_transport_sas: switch to bsg-lib for SMP passthrough
    scsi: smartpqi: remove the smp_handler stub
    scsi: hpsa: remove the smp_handler stub
    scsi: bsg-lib: pass the release callback through bsg_setup_queue
    scsi: Rework handling of scsi_device.vpd_pg8[03]
    scsi: Rework the code for caching Vital Product Data (VPD)
    scsi: rcu: Introduce rcu_swap_protected()
    ...

    Linus Torvalds