Skip to content
Snippets Groups Projects
  1. Sep 14, 2011
  2. Sep 13, 2011
    • Shan Hai's avatar
      locking, lib/atomic64: Annotate atomic64_lock::lock as raw · f59ca058
      Shan Hai authored
      
      The spinlock protected atomic64 operations must be irq safe as they
      are used in hard interrupt context and cannot be preempted on -rt:
      
       NIP [c068b218] rt_spin_lock_slowlock+0x78/0x3a8
        LR [c068b1e0] rt_spin_lock_slowlock+0x40/0x3a8
       Call Trace:
        [eb459b90] [c068b1e0] rt_spin_lock_slowlock+0x40/0x3a8 (unreliable)
        [eb459c20] [c068bdb0] rt_spin_lock+0x40/0x98
        [eb459c40] [c03d2a14] atomic64_read+0x48/0x84
        [eb459c60] [c001aaf4] perf_event_interrupt+0xec/0x28c
        [eb459d10] [c0010138] performance_monitor_exception+0x7c/0x150
        [eb459d30] [c0014170] ret_from_except_full+0x0/0x4c
      
      So annotate it.
      
      In mainline this change documents the low level nature of
      the lock - otherwise there's no functional difference. Lockdep
      and Sparse checking will work as usual.
      
      Signed-off-by: default avatarShan Hai <haishan.bai@gmail.com>
      Reviewed-by: default avatarYong Zhang <yong.zhang0@gmail.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f59ca058
  3. Jul 26, 2011
  4. Mar 01, 2010
  5. Jul 30, 2009
  6. Jun 15, 2009
    • Paul Mackerras's avatar
      lib: Provide generic atomic64_t implementation · 09d4e0ed
      Paul Mackerras authored
      
      Many processor architectures have no 64-bit atomic instructions, but
      we need atomic64_t in order to support the perf_counter subsystem.
      
      This adds an implementation of 64-bit atomic operations using hashed
      spinlocks to provide atomicity.  For each atomic operation, the address
      of the atomic64_t variable is hashed to an index into an array of 16
      spinlocks.  That spinlock is taken (with interrupts disabled) around the
      operation, which can then be coded non-atomically within the lock.
      
      On UP, all the spinlock manipulation goes away and we simply disable
      interrupts around each operation.  In fact gcc eliminates the whole
      atomic64_lock variable as well.
      
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      09d4e0ed
Loading