OSDN Git Service

Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Sep 2015 01:12:07 +0000 (18:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Sep 2015 01:12:07 +0000 (18:12 -0700)
Pull RCU updates from Ingo Molnar:
 "The main RCU changes in this cycle are:

   - the combination of tree geometry-initialization simplifications and
     OS-jitter-reduction changes to expedited grace periods.  These two
     are stacked due to the large number of conflicts that would
     otherwise result.

   - privatize smp_mb__after_unlock_lock().

     This commit moves the definition of smp_mb__after_unlock_lock() to
     kernel/rcu/tree.h, in recognition of the fact that RCU is the only
     thing using this, that nothing else is likely to use it, and that
     it is likely to go away completely.

   - documentation updates.

   - torture-test updates.

   - misc fixes"

* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (60 commits)
  rcu,locking: Privatize smp_mb__after_unlock_lock()
  rcu: Silence lockdep false positive for expedited grace periods
  rcu: Don't disable CPU hotplug during OOM notifiers
  scripts: Make checkpatch.pl warn on expedited RCU grace periods
  rcu: Update MAINTAINERS entry
  rcu: Clarify CONFIG_RCU_EQS_DEBUG help text
  rcu: Fix backwards RCU_LOCKDEP_WARN() in synchronize_rcu_tasks()
  rcu: Rename rcu_lockdep_assert() to RCU_LOCKDEP_WARN()
  rcu: Make rcu_is_watching() really notrace
  cpu: Wait for RCU grace periods concurrently
  rcu: Create a synchronize_rcu_mult()
  rcu: Fix obsolete priority-boosting comment
  rcu: Use WRITE_ONCE in RCU_INIT_POINTER
  rcu: Hide RCU_NOCB_CPU behind RCU_EXPERT
  rcu: Add RCU-sched flavors of get-state and cond-sync
  rcu: Add fastpath bypassing funnel locking
  rcu: Rename RCU_GP_DONE_FQS to RCU_GP_DOING_FQS
  rcu: Pull out wait_event*() condition into helper function
  documentation: Describe new expedited stall warnings
  rcu: Add stall warnings to synchronize_sched_expedited()
  ...

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
kernel/cpu.c

@@@ -910,8 -910,6 +910,8 @@@ bytes respectively. Such letter suffixe
                        Disable PIN 1 of APIC timer
                        Can be useful to work around chipset bugs.
  
 +      dis_ucode_ldr   [X86] Disable the microcode loader.
 +
        dma_debug=off   If the kernel is compiled with DMA_API_DEBUG support,
                        this option disables the debugging code at boot.
  
                        in a given burst of a callback-flood test.
  
        rcutorture.fqs_duration= [KNL]
-                       Set duration of force_quiescent_state bursts.
+                       Set duration of force_quiescent_state bursts
+                       in microseconds.
  
        rcutorture.fqs_holdoff= [KNL]
-                       Set holdoff time within force_quiescent_state bursts.
+                       Set holdoff time within force_quiescent_state bursts
+                       in microseconds.
  
        rcutorture.fqs_stutter= [KNL]
-                       Set wait time between force_quiescent_state bursts.
+                       Set wait time between force_quiescent_state bursts
+                       in seconds.
+       rcutorture.gp_cond= [KNL]
+                       Use conditional/asynchronous update-side
+                       primitives, if available.
  
        rcutorture.gp_exp= [KNL]
-                       Use expedited update-side primitives.
+                       Use expedited update-side primitives, if available.
  
        rcutorture.gp_normal= [KNL]
-                       Use normal (non-expedited) update-side primitives.
-                       If both gp_exp and gp_normal are set, do both.
-                       If neither gp_exp nor gp_normal are set, still
-                       do both.
+                       Use normal (non-expedited) asynchronous
+                       update-side primitives, if available.
+       rcutorture.gp_sync= [KNL]
+                       Use normal (non-expedited) synchronous
+                       update-side primitives, if available.  If all
+                       of rcutorture.gp_cond=, rcutorture.gp_exp=,
+                       rcutorture.gp_normal=, and rcutorture.gp_sync=
+                       are zero, rcutorture acts as if is interpreted
+                       they are all non-zero.
  
        rcutorture.n_barrier_cbs= [KNL]
                        Set callbacks/threads for rcu_barrier() testing.
                        Set time (s) between CPU-hotplug operations, or
                        zero to disable CPU-hotplug testing.
  
-       rcutorture.torture_runnable= [BOOT]
-                       Start rcutorture running at boot time.
        rcutorture.shuffle_interval= [KNL]
                        Set task-shuffle interval (s).  Shuffling tasks
                        allows some CPUs to go into dyntick-idle mode
                        Test RCU's dyntick-idle handling.  See also the
                        rcutorture.shuffle_interval parameter.
  
+       rcutorture.torture_runnable= [BOOT]
+                       Start rcutorture running at boot time.
        rcutorture.torture_type= [KNL]
                        Specify the RCU implementation to test.
  
diff --combined MAINTAINERS
@@@ -556,12 -556,6 +556,12 @@@ S:       Maintaine
  F:    Documentation/i2c/busses/i2c-ali1563
  F:    drivers/i2c/busses/i2c-ali1563.c
  
 +ALLWINNER SECURITY SYSTEM
 +M:    Corentin Labbe <clabbe.montjoie@gmail.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/sunxi-ss/
 +
  ALPHA PORT
  M:    Richard Henderson <rth@twiddle.net>
  M:    Ivan Kokshaysky <ink@jurassic.park.msu.ru>
@@@ -3460,7 -3454,6 +3460,7 @@@ X:      Documentation/devicetree
  X:    Documentation/acpi
  X:    Documentation/power
  X:    Documentation/spi
 +X:    Documentation/DocBook/media
  T:    git git://git.lwn.net/linux-2.6.git docs-next
  
  DOUBLETALK DRIVER
@@@ -3594,15 -3587,6 +3594,15 @@@ S:    Maintaine
  F:    drivers/gpu/drm/rockchip/
  F:    Documentation/devicetree/bindings/video/rockchip*
  
 +DRM DRIVERS FOR STI
 +M:    Benjamin Gaignard <benjamin.gaignard@linaro.org>
 +M:    Vincent Abriou <vincent.abriou@st.com>
 +L:    dri-devel@lists.freedesktop.org
 +T:    git http://git.linaro.org/people/benjamin.gaignard/kernel.git
 +S:    Maintained
 +F:    drivers/gpu/drm/sti
 +F:    Documentation/devicetree/bindings/gpu/st,stih4xx.txt
 +
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -4973,7 -4957,6 +4973,7 @@@ F:      drivers/scsi/storvsc_drv.
  F:    drivers/video/fbdev/hyperv_fb.c
  F:    include/linux/hyperv.h
  F:    tools/hv/
 +F:    Documentation/ABI/stable/sysfs-bus-vmbus
  
  I2C OVER PARALLEL PORT
  M:    Jean Delvare <jdelvare@suse.com>
@@@ -5084,21 -5067,9 +5084,21 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/ia64/
  
 +IBM Power VMX Cryptographic instructions
 +M:    Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com>
 +M:    Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Supported
 +F:    drivers/crypto/vmx/Makefile
 +F:    drivers/crypto/vmx/Kconfig
 +F:    drivers/crypto/vmx/vmx.c
 +F:    drivers/crypto/vmx/aes*
 +F:    drivers/crypto/vmx/ghash*
 +F:    drivers/crypto/vmx/ppc-xlate.pl
 +
  IBM Power in-Nest Crypto Acceleration
 -M:    Marcelo Henrique Cerri <mhcerri@linux.vnet.ibm.com>
 -M:    Fionnuala Gunter <fin@linux.vnet.ibm.com>
 +M:    Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com>
 +M:    Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
  F:    drivers/crypto/nx/Makefile
@@@ -5110,7 -5081,7 +5110,7 @@@ F:      drivers/crypto/nx/nx_csbcpb.
  F:    drivers/crypto/nx/nx_debugfs.h
  
  IBM Power 842 compression accelerator
 -M:    Dan Streetman <ddstreet@us.ibm.com>
 +M:    Dan Streetman <ddstreet@ieee.org>
  S:    Supported
  F:    drivers/crypto/nx/Makefile
  F:    drivers/crypto/nx/Kconfig
@@@ -5869,7 -5840,6 +5869,7 @@@ S:      Odd Fixe
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
  M:    "J. Bruce Fields" <bfields@fieldses.org>
 +M:    Jeff Layton <jlayton@poochiereds.net>
  L:    linux-nfs@vger.kernel.org
  W:    http://nfs.sourceforge.net/
  S:    Supported
@@@ -5926,6 -5896,7 +5926,6 @@@ F:      arch/powerpc/kvm
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <borntraeger@de.ibm.com>
  M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -6060,10 -6031,11 +6060,10 @@@ F:   Documentation/scsi/53c700.tx
  F:    drivers/scsi/53c700*
  
  LED SUBSYSTEM
 -M:    Bryan Wu <cooloney@gmail.com>
  M:    Richard Purdie <rpurdie@rpsys.net>
  M:    Jacek Anaszewski <j.anaszewski@samsung.com>
  L:    linux-leds@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
  S:    Maintained
  F:    drivers/leds/
  F:    include/linux/leds.h
@@@ -6567,13 -6539,6 +6567,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/max16065
  F:    drivers/hwmon/max16065.c
  
 +MAX20751 HARDWARE MONITOR DRIVER
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/max20751
 +F:    drivers/hwmon/max20751.c
 +
  MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
  M:    "Hans J. Koch" <hjk@hansjkoch.de>
  L:    lm-sensors@lm-sensors.org
@@@ -6718,7 -6683,6 +6718,7 @@@ M:      Johannes Thumshirn <morbidrsa@gmail.
  S:    Maintained
  F:    drivers/mcb/
  F:    include/linux/mcb.h
 +F:    Documentation/men-chameleon-bus.txt
  
  MEN F21BMC (Board Management Controller)
  M:    Andreas Werner <andreas.werner@men.de>
@@@ -7324,15 -7288,6 +7324,15 @@@ S:    Supporte
  F:    drivers/block/nvme*
  F:    include/linux/nvme.h
  
 +NVMEM FRAMEWORK
 +M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 +M:    Maxime Ripard <maxime.ripard@free-electrons.com>
 +S:    Maintained
 +F:    drivers/nvmem/
 +F:    Documentation/devicetree/bindings/nvmem/
 +F:    include/linux/nvmem-consumer.h
 +F:    include/linux/nvmem-provider.h
 +
  NXP-NCI NFC DRIVER
  M:    ClĂ©ment Perrochaud <clement.perrochaud@effinnov.com>
  R:    Charles Gorand <charles.gorand@effinnov.com>
@@@ -8119,7 -8074,6 +8119,7 @@@ T:      git git://git.infradead.org/battery-
  S:    Maintained
  F:    include/linux/power_supply.h
  F:    drivers/power/
 +X:    drivers/power/avs/
  
  PNP SUPPORT
  M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
@@@ -8518,7 -8472,7 +8518,7 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- R:    Lai Jiangshan <laijs@cn.fujitsu.com>
+ R:    Lai Jiangshan <jiangshanlai@gmail.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
@@@ -8545,7 -8499,7 +8545,7 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- R:    Lai Jiangshan <laijs@cn.fujitsu.com>
+ R:    Lai Jiangshan <jiangshanlai@gmail.com>
  L:    linux-kernel@vger.kernel.org
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
@@@ -8744,6 -8698,7 +8744,6 @@@ F:      drivers/video/fbdev/savage
  S390
  M:    Martin Schwidefsky <schwidefsky@de.ibm.com>
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8771,6 -8726,7 +8771,6 @@@ F:      block/partitions/ibm.
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8787,6 -8743,7 +8787,6 @@@ F:      drivers/pci/hotplug/s390_pci_hpc.
  
  S390 ZCRYPT DRIVER
  M:    Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8794,6 -8751,7 +8794,6 @@@ F:      drivers/s390/crypto
  
  S390 ZFCP DRIVER
  M:    Steffen Maier <maier@linux.vnet.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8801,6 -8759,7 +8801,6 @@@ F:      drivers/s390/scsi/zfcp_
  
  S390 IUCV NETWORK LAYER
  M:    Ursula Braun <ursula.braun@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -9369,15 -9328,6 +9369,15 @@@ S:    Maintaine
  F:    drivers/media/i2c/ov2659.c
  F:    include/media/ov2659.h
  
 +SILICON MOTION SM712 FRAME BUFFER DRIVER
 +M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 +M:    Teddy Wang <teddy.wang@siliconmotion.com>
 +M:    Sudip Mukherjee <sudip@vectorindia.org>
 +L:    linux-fbdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/video/fbdev/sm712*
 +F:    Documentation/fb/sm712fb.txt
 +
  SIS 190 ETHERNET DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -9417,7 -9367,7 +9417,7 @@@ F:      include/linux/sl?b*.
  F:    mm/sl?b*
  
  SLEEPABLE READ-COPY UPDATE (SRCU)
- M:    Lai Jiangshan <laijs@cn.fujitsu.com>
+ M:    Lai Jiangshan <jiangshanlai@gmail.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
@@@ -9775,6 -9725,11 +9775,6 @@@ W:     http://wiki.laptop.org/go/DCO
  S:    Maintained
  F:    drivers/staging/olpc_dcon/
  
 -STAGING - OZMO DEVICES USB OVER WIFI DRIVER
 -M:    Shigekatsu Tateno <shigekatsu.tateno@atmel.com>
 -S:    Maintained
 -F:    drivers/staging/ozwpan/
 -
  STAGING - PARALLEL LCD/KEYPAD PANEL DRIVER
  M:    Willy Tarreau <willy@meta-x.org>
  S:    Odd Fixes
@@@ -9793,6 -9748,14 +9793,6 @@@ L:     linux-wireless@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/rtl8723au/
  
 -STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER
 -M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 -M:    Teddy Wang <teddy.wang@siliconmotion.com>
 -M:    Sudip Mukherjee <sudip@vectorindia.org>
 -L:    linux-fbdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/staging/sm7xxfb/
 -
  STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
diff --combined kernel/cpu.c
@@@ -191,22 -191,21 +191,22 @@@ void cpu_hotplug_done(void
  void cpu_hotplug_disable(void)
  {
        cpu_maps_update_begin();
 -      cpu_hotplug_disabled = 1;
 +      cpu_hotplug_disabled++;
        cpu_maps_update_done();
  }
 +EXPORT_SYMBOL_GPL(cpu_hotplug_disable);
  
  void cpu_hotplug_enable(void)
  {
        cpu_maps_update_begin();
 -      cpu_hotplug_disabled = 0;
 +      WARN_ON(--cpu_hotplug_disabled < 0);
        cpu_maps_update_done();
  }
 -
 +EXPORT_SYMBOL_GPL(cpu_hotplug_enable);
  #endif        /* CONFIG_HOTPLUG_CPU */
  
  /* Need to know about CPUs going up/down? */
 -int __ref register_cpu_notifier(struct notifier_block *nb)
 +int register_cpu_notifier(struct notifier_block *nb)
  {
        int ret;
        cpu_maps_update_begin();
        return ret;
  }
  
 -int __ref __register_cpu_notifier(struct notifier_block *nb)
 +int __register_cpu_notifier(struct notifier_block *nb)
  {
        return raw_notifier_chain_register(&cpu_chain, nb);
  }
@@@ -245,7 -244,7 +245,7 @@@ static void cpu_notify_nofail(unsigned 
  EXPORT_SYMBOL(register_cpu_notifier);
  EXPORT_SYMBOL(__register_cpu_notifier);
  
 -void __ref unregister_cpu_notifier(struct notifier_block *nb)
 +void unregister_cpu_notifier(struct notifier_block *nb)
  {
        cpu_maps_update_begin();
        raw_notifier_chain_unregister(&cpu_chain, nb);
  }
  EXPORT_SYMBOL(unregister_cpu_notifier);
  
 -void __ref __unregister_cpu_notifier(struct notifier_block *nb)
 +void __unregister_cpu_notifier(struct notifier_block *nb)
  {
        raw_notifier_chain_unregister(&cpu_chain, nb);
  }
@@@ -330,7 -329,7 +330,7 @@@ struct take_cpu_down_param 
  };
  
  /* Take this CPU down. */
 -static int __ref take_cpu_down(void *_param)
 +static int take_cpu_down(void *_param)
  {
        struct take_cpu_down_param *param = _param;
        int err;
  }
  
  /* Requires cpu_add_remove_lock to be held */
 -static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
 +static int _cpu_down(unsigned int cpu, int tasks_frozen)
  {
        int err, nr_calls = 0;
        void *hcpu = (void *)(long)cpu;
         * will observe it.
         *
         * For CONFIG_PREEMPT we have preemptible RCU and its sync_rcu() might
-        * not imply sync_sched(), so explicitly call both.
+        * not imply sync_sched(), so wait for both.
         *
         * Do sync before park smpboot threads to take care the rcu boost case.
         */
- #ifdef CONFIG_PREEMPT
-       synchronize_sched();
- #endif
-       synchronize_rcu();
+       if (IS_ENABLED(CONFIG_PREEMPT))
+               synchronize_rcu_mult(call_rcu, call_rcu_sched);
+       else
+               synchronize_rcu();
  
        smpboot_park_threads(cpu);
  
@@@ -443,7 -442,7 +443,7 @@@ out_release
        return err;
  }
  
 -int __ref cpu_down(unsigned int cpu)
 +int cpu_down(unsigned int cpu)
  {
        int err;
  
@@@ -609,18 -608,13 +609,18 @@@ int disable_nonboot_cpus(void
                }
        }
  
 -      if (!error) {
 +      if (!error)
                BUG_ON(num_online_cpus() > 1);
 -              /* Make sure the CPUs won't be enabled by someone else */
 -              cpu_hotplug_disabled = 1;
 -      } else {
 +      else
                pr_err("Non-boot CPUs are not disabled\n");
 -      }
 +
 +      /*
 +       * Make sure the CPUs won't be enabled by someone else. We need to do
 +       * this even in case of failure as all disable_nonboot_cpus() users are
 +       * supposed to do enable_nonboot_cpus() on the failure path.
 +       */
 +      cpu_hotplug_disabled++;
 +
        cpu_maps_update_done();
        return error;
  }
@@@ -633,13 -627,13 +633,13 @@@ void __weak arch_enable_nonboot_cpus_en
  {
  }
  
 -void __ref enable_nonboot_cpus(void)
 +void enable_nonboot_cpus(void)
  {
        int cpu, error;
  
        /* Allow everyone to use the CPU hotplug again */
        cpu_maps_update_begin();
 -      cpu_hotplug_disabled = 0;
 +      WARN_ON(--cpu_hotplug_disabled < 0);
        if (cpumask_empty(frozen_cpus))
                goto out;