]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 22 May 2012 02:26:51 +0000 (19:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 22 May 2012 02:26:51 +0000 (19:26 -0700)
Pull RCU changes from Ingo Molnar:
 "This is the v3.5 RCU tree from Paul E.  McKenney:

 1) A set of improvements and fixes to the RCU_FAST_NO_HZ feature (with
    more on the way for 3.6).  Posted to LKML:
       https://lkml.org/lkml/2012/4/23/324 (commits 1-3 and 5),
       https://lkml.org/lkml/2012/4/16/611 (commit 4),
       https://lkml.org/lkml/2012/4/30/390 (commit 6), and
       https://lkml.org/lkml/2012/5/4/410 (commit 7, combined with
       the other commits for the convenience of the tester).

 2) Changes to make rcu_barrier() avoid disrupting execution of CPUs
    that have no RCU callbacks.  Posted to LKML:
       https://lkml.org/lkml/2012/4/23/322.

 3) A couple of commits that improve the efficiency of the interaction
    between preemptible RCU and the scheduler, these two being all that
    survived an abortive attempt to allow preemptible RCU's
    __rcu_read_lock() to be inlined.  The full set was posted to LKML at
    https://lkml.org/lkml/2012/4/14/143, and the first and third patches
    of that set remain.

 4) Lai Jiangshan's algorithmic implementation of SRCU, which includes
    call_srcu() and srcu_barrier().  A major feature of this new
    implementation is that synchronize_srcu() no longer disturbs the
    execution of other CPUs.  This work is based on earlier
    implementations by Peter Zijlstra and Paul E.  McKenney.  Posted to
    LKML: https://lkml.org/lkml/2012/2/22/82.

 5) A number of miscellaneous bug fixes and improvements which were
    posted to LKML at: https://lkml.org/lkml/2012/4/23/353 with
    subsequent updates posted to LKML."

* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (32 commits)
  rcu: Make rcu_barrier() less disruptive
  rcu: Explicitly initialize RCU_FAST_NO_HZ per-CPU variables
  rcu: Make RCU_FAST_NO_HZ handle timer migration
  rcu: Update RCU maintainership
  rcu: Make exit_rcu() more precise and consolidate
  rcu: Move PREEMPT_RCU preemption to switch_to() invocation
  rcu: Ensure that RCU_FAST_NO_HZ timers expire on correct CPU
  rcu: Add rcutorture test for call_srcu()
  rcu: Implement per-domain single-threaded call_srcu() state machine
  rcu: Use single value to handle expedited SRCU grace periods
  rcu: Improve srcu_readers_active_idx()'s cache locality
  rcu: Remove unused srcu_barrier()
  rcu: Implement a variant of Peter's SRCU algorithm
  rcu: Improve SRCU's wait_idx() comments
  rcu: Flip ->completed only once per SRCU grace period
  rcu: Increment upper bit only for srcu_read_lock()
  rcu: Remove fast check path from __synchronize_srcu()
  rcu: Direct algorithmic SRCU implementation
  rcu: Introduce rcutorture testing for rcu_barrier()
  timer: Fix mod_timer_pinned() header comment
  ...

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
kernel/sched/core.c

index f995195409fd699c0e657ac1b12d3ce59267e0b2,ab84a01c8d68d6ec90465d958c7988786ae51be6..0e90453e4acb9e9ecc1c594daf92fb33d62a460c
@@@ -2161,9 -2161,6 +2161,9 @@@ bytes respectively. Such letter suffixe
                                on: Turn realloc on
                realloc         same as realloc=on
                noari           do not use PCIe ARI.
 +              pcie_scan_all   Scan all possible PCIe devices.  Otherwise we
 +                              only look for one device below a PCIe downstream
 +                              port.
  
        pcie_aspm=      [PCIE] Forcibly enable or disable PCIe Active State Power
                        Management.
        ramdisk_size=   [RAM] Sizes of RAM disks in kilobytes
                        See Documentation/blockdev/ramdisk.txt.
  
-       rcupdate.blimit=        [KNL,BOOT]
+       rcutree.blimit= [KNL,BOOT]
                        Set maximum number of finished RCU callbacks to process
                        in one batch.
  
-       rcupdate.qhimark=       [KNL,BOOT]
+       rcutree.qhimark=        [KNL,BOOT]
                        Set threshold of queued
                        RCU callbacks over which batch limiting is disabled.
  
-       rcupdate.qlowmark=      [KNL,BOOT]
+       rcutree.qlowmark=       [KNL,BOOT]
                        Set threshold of queued RCU callbacks below which
                        batch limiting is re-enabled.
  
+       rcutree.rcu_cpu_stall_suppress= [KNL,BOOT]
+                       Suppress RCU CPU stall warning messages.
+       rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
+                       Set timeout for RCU CPU stall warning messages.
+       rcutorture.fqs_duration= [KNL,BOOT]
+                       Set duration of force_quiescent_state bursts.
+       rcutorture.fqs_holdoff= [KNL,BOOT]
+                       Set holdoff time within force_quiescent_state bursts.
+       rcutorture.fqs_stutter= [KNL,BOOT]
+                       Set wait time between force_quiescent_state bursts.
+       rcutorture.irqreader= [KNL,BOOT]
+                       Test RCU readers from irq handlers.
+       rcutorture.n_barrier_cbs= [KNL,BOOT]
+                       Set callbacks/threads for rcu_barrier() testing.
+       rcutorture.nfakewriters= [KNL,BOOT]
+                       Set number of concurrent RCU writers.  These just
+                       stress RCU, they don't participate in the actual
+                       test, hence the "fake".
+       rcutorture.nreaders= [KNL,BOOT]
+                       Set number of RCU readers.
+       rcutorture.onoff_holdoff= [KNL,BOOT]
+                       Set time (s) after boot for CPU-hotplug testing.
+       rcutorture.onoff_interval= [KNL,BOOT]
+                       Set time (s) between CPU-hotplug operations, or
+                       zero to disable CPU-hotplug testing.
+       rcutorture.shuffle_interval= [KNL,BOOT]
+                       Set task-shuffle interval (s).  Shuffling tasks
+                       allows some CPUs to go into dyntick-idle mode
+                       during the rcutorture test.
+       rcutorture.shutdown_secs= [KNL,BOOT]
+                       Set time (s) after boot system shutdown.  This
+                       is useful for hands-off automated testing.
+       rcutorture.stall_cpu= [KNL,BOOT]
+                       Duration of CPU stall (s) to test RCU CPU stall
+                       warnings, zero to disable.
+       rcutorture.stall_cpu_holdoff= [KNL,BOOT]
+                       Time to wait (s) after boot before inducing stall.
+       rcutorture.stat_interval= [KNL,BOOT]
+                       Time (s) between statistics printk()s.
+       rcutorture.stutter= [KNL,BOOT]
+                       Time (s) to stutter testing, for example, specifying
+                       five seconds causes the test to run for five seconds,
+                       wait for five seconds, and so on.  This tests RCU's
+                       ability to transition abruptly to and from idle.
+       rcutorture.test_boost= [KNL,BOOT]
+                       Test RCU priority boosting?  0=no, 1=maybe, 2=yes.
+                       "Maybe" means test if the RCU implementation
+                       under test support RCU priority boosting.
+       rcutorture.test_boost_duration= [KNL,BOOT]
+                       Duration (s) of each individual boost test.
+       rcutorture.test_boost_interval= [KNL,BOOT]
+                       Interval (s) between each boost test.
+       rcutorture.test_no_idle_hz= [KNL,BOOT]
+                       Test RCU's dyntick-idle handling.  See also the
+                       rcutorture.shuffle_interval parameter.
+       rcutorture.torture_type= [KNL,BOOT]
+                       Specify the RCU implementation to test.
+       rcutorture.verbose= [KNL,BOOT]
+                       Enable additional printk() statements.
        rdinit=         [KNL]
                        Format: <full_path>
                        Run specified binary instead of /init from the ramdisk,
diff --combined MAINTAINERS
index 73a8b561414b8ae657f5f9975b194ffa520ffd78,dff245064d4b43ed6c80e647e721ba37c5731c24..5ccca1ca0077cfda84d5ec712b6aaeb3f194531f
@@@ -1431,7 -1431,6 +1431,7 @@@ F:      include/linux/backlight.
  BATMAN ADVANCED
  M:    Marek Lindner <lindner_marek@yahoo.de>
  M:    Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
 +M:    Antonio Quartulli <ordex@autistici.org>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -1599,7 -1598,6 +1599,7 @@@ F:      include/linux/bcma
  
  BROCADE BFA FC SCSI DRIVER
  M:    Jing Huang <huangj@brocade.com>
 +M:    Krishna C Gudipati <kgudipat@brocade.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bfa/
@@@ -3520,6 -3518,12 +3520,6 @@@ M:     Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL IXP2000 ETHERNET DRIVER
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/xscale/ixp2000/
 -
  INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
@@@ -3629,7 -3633,7 +3629,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/icplus/ipg.*
  
  IPATH DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Maintained
  F:    drivers/infiniband/hw/ipath/
@@@ -5129,13 -5133,19 +5129,13 @@@ F:   Documentation/powerpc/eeh-pci-error-
  PCI SUBSYSTEM
  M:    Bjorn Helgaas <bhelgaas@google.com>
  L:    linux-pci@vger.kernel.org
 -Q:    http://patchwork.kernel.org/project/linux-pci/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci.git
 +Q:    http://patchwork.ozlabs.org/project/linux-pci/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/linux.git
  S:    Supported
  F:    Documentation/PCI/
  F:    drivers/pci/
  F:    include/linux/pci*
  
 -PCI HOTPLUG
 -M:    Bjorn Helgaas <bhelgaas@google.com>
 -L:    linux-pci@vger.kernel.org
 -S:    Supported
 -F:    drivers/pci/hotplug
 -
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -5198,7 -5208,7 +5198,7 @@@ S:      Maintaine
  F:    include/linux/personality.h
  
  PHONET PROTOCOL
 -M:    Remi Denis-Courmont <remi.denis-courmont@nokia.com>
 +M:    Remi Denis-Courmont <courmisch@gmail.com>
  S:    Supported
  F:    Documentation/networking/phonet.txt
  F:    include/linux/phonet.h
@@@ -5448,7 -5458,7 +5448,7 @@@ L:      rtc-linux@googlegroups.co
  S:    Maintained
  
  QIB DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -5598,14 -5608,13 +5598,13 @@@ F:   net/rds
  READ-COPY UPDATE (RCU)
  M:    Dipankar Sarma <dipankar@in.ibm.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
- W:    http://www.rdrop.com/users/paulmck/rclock/
+ W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/
+ X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
- F:    include/linux/srcu*
  F:    kernel/rcu*
- F:    kernel/srcu*
  X:    kernel/rcutorture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
@@@ -6122,6 -6131,15 +6121,15 @@@ S:    Maintaine
  F:    include/linux/sl?b*.h
  F:    mm/sl?b.c
  
+ SLEEPABLE READ-COPY UPDATE (SRCU)
+ M:    Lai Jiangshan <laijs@cn.fujitsu.com>
+ M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
+ W:    http://www.rdrop.com/users/paulmck/RCU/
+ S:    Supported
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
+ F:    include/linux/srcu*
+ F:    kernel/srcu*
  SMC91x ETHERNET DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Odd Fixes
@@@ -6666,16 -6684,6 +6674,16 @@@ L:    alsa-devel@alsa-project.org (moderat
  S:    Maintained
  F:    sound/soc/codecs/twl4030*
  
 +TI WILINK WIRELESS DRIVERS
 +M:    Luciano Coelho <coelho@ti.com>
 +L:    linux-wireless@vger.kernel.org
 +W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 +W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 +S:    Maintained
 +F:    drivers/net/wireless/ti/
 +F:    include/linux/wl12xx.h
 +
  TIPC NETWORK LAYER
  M:    Jon Maloy <jon.maloy@ericsson.com>
  M:    Allan Stephens <allan.stephens@windriver.com>
@@@ -6883,14 -6891,6 +6891,14 @@@ F:    Documentation/cdrom
  F:    drivers/cdrom/cdrom.c
  F:    include/linux/cdrom.h
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 +M:    Vinayak Holikatti <vinholikatti@gmail.com>
 +M:    Santosh Y <santoshsy@gmail.com>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    Documentation/scsi/ufs.txt
 +F:    drivers/scsi/ufs/
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Artem Bityutskiy <dedekind1@gmail.com>
  W:    http://www.linux-mtd.infradead.org/
@@@ -7440,6 -7440,23 +7448,6 @@@ M:     Miloslav Trmac <mitr@volny.cz
  S:    Maintained
  F:    drivers/input/misc/wistron_btns.c
  
 -WL1251 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl1251/*
 -
 -WL1271 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl12xx/
 -F:    include/linux/wl12xx.h
 -
  WL3501 WIRELESS PCMCIA CARD DRIVER
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  L:    linux-wireless@vger.kernel.org
diff --combined kernel/sched/core.c
index e5212ae294f63dfc5678fdb15cb7f74abd4383b8,8bedcc4cc7c2dcf2a48f85f884846e2d9fb3762a..eb4131b8ad60771d204e14e3568c68639ffd284d
@@@ -2083,6 -2083,7 +2083,7 @@@ context_switch(struct rq *rq, struct ta
  #endif
  
        /* Here we just switch the register state and the stack. */
+       rcu_switch_from(prev);
        switch_to(prev, next, prev);
  
        barrier();
@@@ -6382,8 -6383,6 +6383,8 @@@ static int __sdt_alloc(const struct cpu
                        if (!sg)
                                return -ENOMEM;
  
 +                      sg->next = sg;
 +
                        *per_cpu_ptr(sdd->sg, j) = sg;
  
                        sgp = kzalloc_node(sizeof(struct sched_group_power),