1. 19 9月, 2009 3 次提交
    • P
      rcu: Fix thinko, actually initialize full tree · 49e29126
      Paul E. McKenney 提交于
      Commit de078d87 ("rcu: Need to update rnp->gpnum if preemptable RCU
      is to be reliable") repeatedly and incorrectly initializes the root
      rcu_node structure's ->gpnum field rather than initializing the
      ->gpnum field of each node in the tree.  Fix this.  Also add an
      additional consistency check to catch this in the future.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josh@joshtriplett.org
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      Cc: Valdis.Kletnieks@vt.edu
      LKML-Reference: <125329262011-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      49e29126
    • P
      rcu: Apply results of code inspection of kernel/rcutree_plugin.h · e7d8842e
      Paul E. McKenney 提交于
      o Drop the calls to cpu_quiet() from the online/offline code.
        These are unnecessary, since force_quiescent_state() will
        clean up, and removing them simplifies the code a bit.
      
      o Add a warning to check that we don't enqueue the same blocked
        task twice onto the ->blocked_tasks[] lists.
      
      o Rework the phase computation in rcu_preempt_note_context_switch()
        to be more readable, as suggested by Josh Triplett.
      
      o Disable irqs to close a race between the scheduling clock
        interrupt and rcu_preempt_note_context_switch() WRT the
        ->rcu_read_unlock_special field.
      
      o Add comments to rnp->lock acquisition and release within
        rcu_read_unlock_special() noting that irqs are already
        disabled.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josh@joshtriplett.org
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      Cc: Valdis.Kletnieks@vt.edu
      LKML-Reference: <12532926201851-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e7d8842e
    • P
      rcu: Add WARN_ON_ONCE() consistency checks covering state transitions · 28ecd580
      Paul E. McKenney 提交于
      o Verify that qsmask bits stay clear through GP
        initialization.
      
      o Verify that cpu_quiet_msk_finish() is never invoked unless
        there actually is an RCU grace period in progress.
      
      o Verify that all internal-node rcu_node structures have empty
        blocked_tasks[] lists.
      
      o Verify that child rcu_node structure's bits remain clear after
        acquiring parent's lock.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josh@joshtriplett.org
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      Cc: Valdis.Kletnieks@vt.edu
      LKML-Reference: <12532926191947-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      28ecd580
  2. 18 9月, 2009 13 次提交
    • P
      rcu: Fix synchronize_rcu() for TREE_PREEMPT_RCU · 16e30811
      Paul E. McKenney 提交于
      The redirection of synchronize_sched() to synchronize_rcu() was
      appropriate for TREE_RCU, but not for TREE_PREEMPT_RCU.
      
      Fix this by creating an underlying synchronize_sched().  TREE_RCU
      then redirects synchronize_rcu() to synchronize_sched(), while
      TREE_PREEMPT_RCU has its own version of synchronize_rcu().
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josh@joshtriplett.org
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      Cc: Valdis.Kletnieks@vt.edu
      LKML-Reference: <12528585111916-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      16e30811
    • P
      rcu: Simplify rcu_read_unlock_special() quiescent-state accounting · c3422bea
      Paul E. McKenney 提交于
      The earlier approach required two scheduling-clock ticks to note an
      preemptable-RCU quiescent state in the situation in which the
      scheduling-clock interrupt is unlucky enough to always interrupt an
      RCU read-side critical section.
      
      With this change, the quiescent state is instead noted by the
      outermost rcu_read_unlock() immediately following the first
      scheduling-clock tick, or, alternatively, by the first subsequent
      context switch.  Therefore, this change also speeds up grace
      periods.
      Suggested-by: NJosh Triplett <josh@joshtriplett.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      Cc: Valdis.Kletnieks@vt.edu
      LKML-Reference: <12528585111945-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c3422bea
    • P
      rcu: Add debug checks to TREE_PREEMPT_RCU for premature grace periods · b0e165c0
      Paul E. McKenney 提交于
      Check to make sure that there are no blocked tasks for the previous
      grace period while initializing for the next grace period, verify
      that rcu_preempt_qs() is given the correct CPU number and is never
      called for an offline CPU.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josh@joshtriplett.org
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      Cc: Valdis.Kletnieks@vt.edu
      LKML-Reference: <12528585111986-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b0e165c0
    • P
      rcu: Kconfig help needs to say that TREE_PREEMPT_RCU scales down · bbe3eae8
      Paul E. McKenney 提交于
      To quote Valdis:
      
          This leaves somebody who has a laptop wondering which
          choice is best for a system with only one or two cores that
          has CONFIG_PREEMPT defined. One choice says it scales down
          nicely, the other explicitly has a 'depends on PREEMPT'
          attached to it...
      
      So add "scales down nicely" to TREE_PREEMPT_RCU to match that of
      TREE_RCU.
      Suggested-by: NValdis Kletnieks <Valdis.Kletnieks@vt.edu>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josh@joshtriplett.org
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      Cc: rostedt@goodmis.org
      LKML-Reference: <12528585112362-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      bbe3eae8
    • J
      rcutorture: Occasionally delay readers enough to make RCU force_quiescent_state · b8d57a76
      Josh Triplett 提交于
      rcutorture already delays readers, but never for long enough to
      make RCU force a quiescent state.  Add an occasional delay of
      50ms.
      Signed-off-by: NJosh Triplett <josh@joshtriplett.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josht@linux.vnet.ibm.com
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      LKML-Reference: <12524504772607-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b8d57a76
    • P
      rcu: Initialize multi-level RCU grace periods holding locks · b835db1f
      Paul E. McKenney 提交于
      Prior implementations initialized the root and any internal
      nodes without holding locks, then initialized the leaves
      holding locks.
      
      This is a false economy, as the leaf nodes will usually greatly
      outnumber the root and internal nodes.  Acquiring locks on all
      nodes is conceptually much simpler as well.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josht@linux.vnet.ibm.com
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      LKML-Reference: <12524504773190-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b835db1f
    • P
      rcu: Need to update rnp->gpnum if preemptable RCU is to be reliable · de078d87
      Paul E. McKenney 提交于
      Without this patch, tasks preempted in RCU read-side critical
      sections can fail to block the grace period, given that
      rnp->gpnum is used to determine which rnp->blocked_tasks[]
      element the preempted task is enqueued on.
      
      Before the patch, rnp->gpnum is always zero, so preempted tasks
      are always enqueued on rnp->blocked_tasks[0], which is correct
      only when the current CPU has not checked into the current
      grace period and the grace-period number is even, or,
      similarly, if the current CPU -has- checked into the current
      grace period and the grace-period number is odd.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Cc: laijs@cn.fujitsu.com
      Cc: dipankar@in.ibm.com
      Cc: akpm@linux-foundation.org
      Cc: mathieu.desnoyers@polymtl.ca
      Cc: josht@linux.vnet.ibm.com
      Cc: dvhltc@us.ibm.com
      Cc: niv@us.ibm.com
      Cc: peterz@infradead.org
      LKML-Reference: <12524504771622-git-send-email->
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      de078d87
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · de55a895
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        amd64_edac: check NB MCE bank enable on the current node properly
        amd64_edac: Rewrite unganged mode code of f10_early_channel_count
        amd64_edac: cleanup amd64_check_ecc_enabled
        x86, EDAC: Provide function to return NodeId of a CPU
        amd64_edac: build driver only on AMD hardware
      de55a895
    • L
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 79b520e8
      Linus Torvalds 提交于
      * 'for-linus' of git://oss.sgi.com/xfs/xfs: (39 commits)
        xfs: includecheck fix for fs/xfs/xfs_iops.c
        xfs: switch to seq_file
        xfs: Record new maintainer information
        xfs: use correct log reservation when handling ENOSPC in xfs_create
        xfs: xfs_showargs() reports group *and* project quotas enabled
        xfs: un-static xfs_inobt_lookup
        xfs: actually enable the swapext compat handler
        xfs: simplify xfs_trans_iget
        xfs: merge fsync and O_SYNC handling
        xfs: speed up free inode search
        xfs: rationalize xfs_inobt_lookup*
        xfs: untangle xfs_dialloc
        xfs: factor out debug checks from xfs_dialloc and xfs_difree
        xfs: improve xfs_inobt_update prototype
        xfs: improve xfs_inobt_get_rec prototype
        xfs: factor out inode initialisation
        fs/xfs: Correct redundant test
        xfs: remove XFS_INO64_OFFSET
        un-static xfs_read_agf
        xfs: add more statics & drop some unused functions
        ...
      79b520e8
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin · abf5940d
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (75 commits)
        Blackfin: update ftrace for latest toolchain
        Blackfin: fix elf_fpregset_t definition
        Blackfin: unify cache init functions
        Blackfin: swap clocksource ratings for gptimer/cycles
        Blackfin: update ftrace_push_return_trace() breakage
        Blackfin: update cm board resources
        Blackfin: cm-bf537u: split board from cm-bf537e
        Blackfin: bf538-ezkit: add SPI IRQ resources
        Blackfin: increase default async timings for parallel flashes
        Blackfin: add ICPLB coverage for async banks
        Blackfin: use KERN_ALERT in all kgdb_test output
        Blackfin: fix BF54x SPI CS resources
        Blackfin: fix typo in isram_write()
        Blackfin: bf537-stamp: add adp5588 gpio resources
        Blackfin: add some isram-driver self tests
        Blackfin: workaround anomaly 05000283
        Blackfin: fix spelling in a few comments
        Blackfin: use raw_smp_processor_id() in exception code
        Blackfin: remove useless duplicated assignment in gpio code
        Blackfin: Fix link errors with binutils 2.19 and GCC 4.3
        ...
      abf5940d
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · 66bc4a6f
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: (53 commits)
        m68knommu: Make PAGE_SIZE available to assembly files.
        m68knommu: fix ColdFire definition of CLOCK_TICK_RATE
        m68knommu: set multi-function pins for ethernet when enabled
        m68knommu: remove special interrupt handling code for ne2k support
        m68knommu: relax IO_SPACE_LIMIT setting
        m68knommu: remove ColdFire direct interrupt register access
        m68knommu: create a speciailized ColdFire 5272 interrupt controller
        m68knommu: add support for second interrupt controller of ColdFire 5249
        m68knommu: clean up old ColdFire timer irq setup
        m68knommu: map ColdFire interrupts to correct masking bits
        m68knommu: clean up ColdFire 532x CPU timer setup
        m68knommu: simplify ColdFire "timers" clock initialization
        m68knommu: support code to mask external interrupts on old ColdFire CPU's
        m68knommu: merge old ColdFire interrupt controller masking macros
        m68knommu: remove duplicate ColdFire mcf_autovector() code
        m68knommu: move ColdFire INTC definitions to new include file
        m68knommu: mask off all interrupts in ColdFire intc-simr controller
        m68knommu: remove timer device interrupt setup for ColdFire 532x
        m68knommu: remove interrupt masking from ColdFire pit timer
        m68knommu: remove unecessary interrupt level setting in ColdFire 520x setup
        ...
      66bc4a6f
    • L
      Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 96c015b7
      Linus Torvalds 提交于
      * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        hwmon: (lm85) Don't bind to Winbond/Nuvoton WPCD377I
        hwmon: (pcf8591) Documentation clean-ups
        hwmon: Clearly mark ACPI drivers as such
        hwmon: Use resource_size
        hwmon: Include <linux/io.h> instead of <asm/io.h>
        hwmon: (tmp421) Add documentation
        hwmon: Add driver for Texas Instruments TMP421/422/423 sensor chips
        hwmon-vid: Ignore 6th VID pin of AMD family 0Fh processors
        hwmon: (asus_atk0110) Add maintainer information
        hwmon: (abituguru3) Support multiple DMI strings per chip ID
      96c015b7
    • L
      Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb · 3aee0605
      Linus Torvalds 提交于
      * 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb:
        uwb: avoid radio controller reset loops
        uwb: stop uwbd thread if rc->start() fails
        uwb: handle radio controller events with out-of-range IDs correctly
      3aee0605
  3. 17 9月, 2009 24 次提交