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

Commit 75b50322 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'linus' into perfcounters/core



Merge reason: Pick up the latest fixes before the -v8 perfcounters
	      release.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parents 0b73da3f b87297fb
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -150,6 +150,11 @@ fan[1-*]_min Fan minimum value
		Unit: revolution/min (RPM)
		RW

fan[1-*]_max	Fan maximum value
		Unit: revolution/min (RPM)
		Only rarely supported by the hardware.
		RW

fan[1-*]_input	Fan input value.
		Unit: revolution/min (RPM)
		RO
@@ -390,6 +395,7 @@ OR
in[0-*]_min_alarm
in[0-*]_max_alarm
fan[1-*]_min_alarm
fan[1-*]_max_alarm
temp[1-*]_min_alarm
temp[1-*]_max_alarm
temp[1-*]_crit_alarm
+10 −1
Original line number Diff line number Diff line
@@ -624,6 +624,7 @@ M: paulius.zaleckas@teltonika.lt
L:	linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
T:	git git://gitorious.org/linux-gemini/mainline.git
S:	Maintained
F:	arch/arm/mach-gemini/

ARM/EBSA110 MACHINE SUPPORT
P:	Russell King
@@ -650,6 +651,7 @@ P: Paulius Zaleckas
M:	paulius.zaleckas@teltonika.lt
L:	linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
S:	Maintained
F:	arch/arm/mm/*-fa*

ARM/FOOTBRIDGE ARCHITECTURE
P:	Russell King
@@ -1540,6 +1542,13 @@ W: http://www.fi.muni.cz/~kas/cosa/
S:	Maintained
F:	drivers/net/wan/cosa*

CPMAC ETHERNET DRIVER
P:	Florian Fainelli
M:	florian@openwrt.org
L:	netdev@vger.kernel.org
S:	Maintained
F:	drivers/net/cpmac.c

CPU FREQUENCY DRIVERS
P:	Dave Jones
M:	davej@redhat.com
@@ -2249,7 +2258,7 @@ P: Li Yang
M:	leoli@freescale.com
P:	Zhang Wei
M:	zw@zh-kernel.org
L:	linuxppc-embedded@ozlabs.org
L:	linuxppc-dev@ozlabs.org
L:	linux-kernel@vger.kernel.org
S:	Maintained
F:	drivers/dma/fsldma.*
+1 −1
Original line number Diff line number Diff line
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 30
EXTRAVERSION = -rc7
EXTRAVERSION = -rc8
NAME = Man-Eating Seals of Antiquity

# *DOCUMENTATION*
+13 −0
Original line number Diff line number Diff line
@@ -114,3 +114,16 @@
	.align	3;				\
	.long	9999b,9001f;			\
	.previous

/*
 * SMP data memory barrier
 */
	.macro	smp_dmb
#ifdef CONFIG_SMP
#if __LINUX_ARM_ARCH__ >= 7
	dmb
#elif __LINUX_ARM_ARCH__ == 6
	mcr	p15, 0, r0, c7, c10, 5	@ dmb
#endif
#endif
	.endm
+52 −9
Original line number Diff line number Diff line
@@ -44,11 +44,29 @@ static inline void atomic_set(atomic_t *v, int i)
	: "cc");
}

static inline void atomic_add(int i, atomic_t *v)
{
	unsigned long tmp;
	int result;

	__asm__ __volatile__("@ atomic_add\n"
"1:	ldrex	%0, [%2]\n"
"	add	%0, %0, %3\n"
"	strex	%1, %0, [%2]\n"
"	teq	%1, #0\n"
"	bne	1b"
	: "=&r" (result), "=&r" (tmp)
	: "r" (&v->counter), "Ir" (i)
	: "cc");
}

static inline int atomic_add_return(int i, atomic_t *v)
{
	unsigned long tmp;
	int result;

	smp_mb();

	__asm__ __volatile__("@ atomic_add_return\n"
"1:	ldrex	%0, [%2]\n"
"	add	%0, %0, %3\n"
@@ -59,14 +77,34 @@ static inline int atomic_add_return(int i, atomic_t *v)
	: "r" (&v->counter), "Ir" (i)
	: "cc");

	smp_mb();

	return result;
}

static inline void atomic_sub(int i, atomic_t *v)
{
	unsigned long tmp;
	int result;

	__asm__ __volatile__("@ atomic_sub\n"
"1:	ldrex	%0, [%2]\n"
"	sub	%0, %0, %3\n"
"	strex	%1, %0, [%2]\n"
"	teq	%1, #0\n"
"	bne	1b"
	: "=&r" (result), "=&r" (tmp)
	: "r" (&v->counter), "Ir" (i)
	: "cc");
}

static inline int atomic_sub_return(int i, atomic_t *v)
{
	unsigned long tmp;
	int result;

	smp_mb();

	__asm__ __volatile__("@ atomic_sub_return\n"
"1:	ldrex	%0, [%2]\n"
"	sub	%0, %0, %3\n"
@@ -77,6 +115,8 @@ static inline int atomic_sub_return(int i, atomic_t *v)
	: "r" (&v->counter), "Ir" (i)
	: "cc");

	smp_mb();

	return result;
}

@@ -84,6 +124,8 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
{
	unsigned long oldval, res;

	smp_mb();

	do {
		__asm__ __volatile__("@ atomic_cmpxchg\n"
		"ldrex	%1, [%2]\n"
@@ -95,6 +137,8 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
		    : "cc");
	} while (res);

	smp_mb();

	return oldval;
}

@@ -135,6 +179,7 @@ static inline int atomic_add_return(int i, atomic_t *v)

	return val;
}
#define atomic_add(i, v)	(void) atomic_add_return(i, v)

static inline int atomic_sub_return(int i, atomic_t *v)
{
@@ -148,6 +193,7 @@ static inline int atomic_sub_return(int i, atomic_t *v)

	return val;
}
#define atomic_sub(i, v)	(void) atomic_sub_return(i, v)

static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
{
@@ -187,10 +233,8 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
}
#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)

#define atomic_add(i, v)	(void) atomic_add_return(i, v)
#define atomic_inc(v)		(void) atomic_add_return(1, v)
#define atomic_sub(i, v)	(void) atomic_sub_return(i, v)
#define atomic_dec(v)		(void) atomic_sub_return(1, v)
#define atomic_inc(v)		atomic_add(1, v)
#define atomic_dec(v)		atomic_sub(1, v)

#define atomic_inc_and_test(v)	(atomic_add_return(1, v) == 0)
#define atomic_dec_and_test(v)	(atomic_sub_return(1, v) == 0)
@@ -200,11 +244,10 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)

#define atomic_add_negative(i,v) (atomic_add_return(i, v) < 0)

/* Atomic operations are already serializing on ARM */
#define smp_mb__before_atomic_dec()	barrier()
#define smp_mb__after_atomic_dec()	barrier()
#define smp_mb__before_atomic_inc()	barrier()
#define smp_mb__after_atomic_inc()	barrier()
#define smp_mb__before_atomic_dec()	smp_mb()
#define smp_mb__after_atomic_dec()	smp_mb()
#define smp_mb__before_atomic_inc()	smp_mb()
#define smp_mb__after_atomic_inc()	smp_mb()

#include <asm-generic/atomic.h>
#endif
Loading