Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f0ddf91 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'core-locking-for-linus' of...

Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (26 commits)
  clockevents: Convert to raw_spinlock
  clockevents: Make tick_device_lock static
  debugobjects: Convert to raw_spinlocks
  perf_event: Convert to raw_spinlock
  hrtimers: Convert to raw_spinlocks
  genirq: Convert irq_desc.lock to raw_spinlock
  smp: Convert smplocks to raw_spinlocks
  rtmutes: Convert rtmutex.lock to raw_spinlock
  sched: Convert pi_lock to raw_spinlock
  sched: Convert cpupri lock to raw_spinlock
  sched: Convert rt_runtime_lock to raw_spinlock
  sched: Convert rq->lock to raw_spinlock
  plist: Make plist debugging raw_spinlock aware
  bkl: Fixup core_lock fallout
  locking: Cleanup the name space completely
  locking: Further name space cleanups
  alpha: Fix fallout from locking changes
  locking: Implement new raw_spinlock
  locking: Convert raw_rwlock functions to arch_rwlock
  locking: Convert raw_rwlock to arch_rwlock
  ...
parents 050cbb09 b5f91da0
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -435,7 +435,7 @@ extern inline void t2_outl(u32 b, unsigned long addr)
	set_hae(msb); \
}

extern spinlock_t t2_hae_lock;
extern raw_spinlock_t t2_hae_lock;

/*
 * NOTE: take T2_DENSE_MEM off in each readX/writeX routine, since
@@ -448,12 +448,12 @@ __EXTERN_INLINE u8 t2_readb(const volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long result, msb;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	result = *(vip) ((addr << 5) + T2_SPARSE_MEM + 0x00);
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
	return __kernel_extbl(result, addr & 3);
}

@@ -462,12 +462,12 @@ __EXTERN_INLINE u16 t2_readw(const volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long result, msb;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	result = *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08);
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
	return __kernel_extwl(result, addr & 3);
}

@@ -480,12 +480,12 @@ __EXTERN_INLINE u32 t2_readl(const volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long result, msb;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	result = *(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18);
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
	return result & 0xffffffffUL;
}

@@ -494,14 +494,14 @@ __EXTERN_INLINE u64 t2_readq(const volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long r0, r1, work, msb;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	work = (addr << 5) + T2_SPARSE_MEM + 0x18;
	r0 = *(vuip)(work);
	r1 = *(vuip)(work + (4 << 5));
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
	return r1 << 32 | r0;
}

@@ -510,13 +510,13 @@ __EXTERN_INLINE void t2_writeb(u8 b, volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long msb, w;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	w = __kernel_insbl(b, addr & 3);
	*(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x00) = w;
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
}

__EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr)
@@ -524,13 +524,13 @@ __EXTERN_INLINE void t2_writew(u16 b, volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long msb, w;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	w = __kernel_inswl(b, addr & 3);
	*(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08) = w;
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
}

/*
@@ -542,12 +542,12 @@ __EXTERN_INLINE void t2_writel(u32 b, volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long msb;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	*(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18) = b;
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
}

__EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr)
@@ -555,14 +555,14 @@ __EXTERN_INLINE void t2_writeq(u64 b, volatile void __iomem *xaddr)
	unsigned long addr = (unsigned long) xaddr - T2_DENSE_MEM;
	unsigned long msb, work;
	unsigned long flags;
	spin_lock_irqsave(&t2_hae_lock, flags);
	raw_spin_lock_irqsave(&t2_hae_lock, flags);

	t2_set_hae;

	work = (addr << 5) + T2_SPARSE_MEM + 0x18;
	*(vuip)work = b;
	*(vuip)(work + (4 << 5)) = b >> 32;
	spin_unlock_irqrestore(&t2_hae_lock, flags);
	raw_spin_unlock_irqrestore(&t2_hae_lock, flags);
}

__EXTERN_INLINE void __iomem *t2_ioportmap(unsigned long addr)
+19 −19
Original line number Diff line number Diff line
@@ -12,18 +12,18 @@
 * We make no fairness assumptions. They have a cost.
 */

#define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock)
#define __raw_spin_is_locked(x)	((x)->lock != 0)
#define __raw_spin_unlock_wait(x) \
#define arch_spin_lock_flags(lock, flags) arch_spin_lock(lock)
#define arch_spin_is_locked(x)	((x)->lock != 0)
#define arch_spin_unlock_wait(x) \
		do { cpu_relax(); } while ((x)->lock)

static inline void __raw_spin_unlock(raw_spinlock_t * lock)
static inline void arch_spin_unlock(arch_spinlock_t * lock)
{
	mb();
	lock->lock = 0;
}

static inline void __raw_spin_lock(raw_spinlock_t * lock)
static inline void arch_spin_lock(arch_spinlock_t * lock)
{
	long tmp;

@@ -43,24 +43,24 @@ static inline void __raw_spin_lock(raw_spinlock_t * lock)
	: "m"(lock->lock) : "memory");
}

static inline int __raw_spin_trylock(raw_spinlock_t *lock)
static inline int arch_spin_trylock(arch_spinlock_t *lock)
{
	return !test_and_set_bit(0, &lock->lock);
}

/***********************************************************/

static inline int __raw_read_can_lock(raw_rwlock_t *lock)
static inline int arch_read_can_lock(arch_rwlock_t *lock)
{
	return (lock->lock & 1) == 0;
}

static inline int __raw_write_can_lock(raw_rwlock_t *lock)
static inline int arch_write_can_lock(arch_rwlock_t *lock)
{
	return lock->lock == 0;
}

static inline void __raw_read_lock(raw_rwlock_t *lock)
static inline void arch_read_lock(arch_rwlock_t *lock)
{
	long regx;

@@ -80,7 +80,7 @@ static inline void __raw_read_lock(raw_rwlock_t *lock)
	: "m" (*lock) : "memory");
}

static inline void __raw_write_lock(raw_rwlock_t *lock)
static inline void arch_write_lock(arch_rwlock_t *lock)
{
	long regx;

@@ -100,7 +100,7 @@ static inline void __raw_write_lock(raw_rwlock_t *lock)
	: "m" (*lock) : "memory");
}

static inline int __raw_read_trylock(raw_rwlock_t * lock)
static inline int arch_read_trylock(arch_rwlock_t * lock)
{
	long regx;
	int success;
@@ -122,7 +122,7 @@ static inline int __raw_read_trylock(raw_rwlock_t * lock)
	return success;
}

static inline int __raw_write_trylock(raw_rwlock_t * lock)
static inline int arch_write_trylock(arch_rwlock_t * lock)
{
	long regx;
	int success;
@@ -144,7 +144,7 @@ static inline int __raw_write_trylock(raw_rwlock_t * lock)
	return success;
}

static inline void __raw_read_unlock(raw_rwlock_t * lock)
static inline void arch_read_unlock(arch_rwlock_t * lock)
{
	long regx;
	__asm__ __volatile__(
@@ -160,17 +160,17 @@ static inline void __raw_read_unlock(raw_rwlock_t * lock)
	: "m" (*lock) : "memory");
}

static inline void __raw_write_unlock(raw_rwlock_t * lock)
static inline void arch_write_unlock(arch_rwlock_t * lock)
{
	mb();
	lock->lock = 0;
}

#define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock)
#define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock)
#define arch_read_lock_flags(lock, flags) arch_read_lock(lock)
#define arch_write_lock_flags(lock, flags) arch_write_lock(lock)

#define _raw_spin_relax(lock)	cpu_relax()
#define _raw_read_relax(lock)	cpu_relax()
#define _raw_write_relax(lock)	cpu_relax()
#define arch_spin_relax(lock)	cpu_relax()
#define arch_read_relax(lock)	cpu_relax()
#define arch_write_relax(lock)	cpu_relax()

#endif /* _ALPHA_SPINLOCK_H */
+4 −4
Original line number Diff line number Diff line
@@ -7,14 +7,14 @@

typedef struct {
	volatile unsigned int lock;
} raw_spinlock_t;
} arch_spinlock_t;

#define __RAW_SPIN_LOCK_UNLOCKED	{ 0 }
#define __ARCH_SPIN_LOCK_UNLOCKED	{ 0 }

typedef struct {
	volatile unsigned int lock;
} raw_rwlock_t;
} arch_rwlock_t;

#define __RAW_RW_LOCK_UNLOCKED		{ 0 }
#define __ARCH_RW_LOCK_UNLOCKED		{ 0 }

#endif
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@
# define DBG(args)
#endif

DEFINE_SPINLOCK(t2_hae_lock);
DEFINE_RAW_SPINLOCK(t2_hae_lock);

static volatile unsigned int t2_mcheck_any_expected;
static volatile unsigned int t2_mcheck_last_taken;
+2 −2
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ show_interrupts(struct seq_file *p, void *v)
#endif

	if (irq < ACTUAL_NR_IRQS) {
		spin_lock_irqsave(&irq_desc[irq].lock, flags);
		raw_spin_lock_irqsave(&irq_desc[irq].lock, flags);
		action = irq_desc[irq].action;
		if (!action) 
			goto unlock;
@@ -105,7 +105,7 @@ show_interrupts(struct seq_file *p, void *v)

		seq_putc(p, '\n');
unlock:
		spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
		raw_spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
	} else if (irq == ACTUAL_NR_IRQS) {
#ifdef CONFIG_SMP
		seq_puts(p, "IPI: ");
Loading