* [mips] Fix logic bug in atomic_sub_if_positive.
svn path=/dists/trunk/linux-2.6/; revision=11752
This commit is contained in:
parent
d01ebeeb1d
commit
753608df16
|
@ -108,6 +108,9 @@ linux-2.6 (2.6.26~rc8-1~experimental.1) UNRELEASED; urgency=low
|
|||
[ Christian T. Steigies ]
|
||||
* [m68k] enable SERIAL_CONSOLE for amiga and atari
|
||||
|
||||
[ Thiemo Seufer ]
|
||||
* [mips] Fix logic bug in atomic_sub_if_positive.
|
||||
|
||||
-- Christian T. Steigies <cts@debian.org> Thu, 12 Jun 2008 15:31:54 +0200
|
||||
|
||||
linux-2.6 (2.6.25-1~experimental.1) UNRELEASED; urgency=low
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
From: Morten Larsen <mlarsen@broadcom.com>
|
||||
|
||||
As far as I can tell the branch optimization fixes in 2.6.21 introduced
|
||||
a bug in atomic_sub_if_positive that causes it to return even when the
|
||||
sc instruction fails. The result is that e.g. down_trylock becomes
|
||||
unreliable as the semaphore counter is not always decremented.
|
||||
|
||||
|
||||
--- a/include/asm-mips/atomic.h 2008-06-25 22:38:43.159739000 -0700
|
||||
+++ b/include/asm-mips/atomic.h 2008-06-25 22:39:07.552065000 -0700
|
||||
@@ -292,10 +292,10 @@ static __inline__ int atomic_sub_if_posi
|
||||
" beqz %0, 2f \n"
|
||||
" subu %0, %1, %3 \n"
|
||||
" .set reorder \n"
|
||||
- "1: \n"
|
||||
" .subsection 2 \n"
|
||||
"2: b 1b \n"
|
||||
" .previous \n"
|
||||
+ "1: \n"
|
||||
" .set mips0 \n"
|
||||
: "=&r" (result), "=&r" (temp), "=m" (v->counter)
|
||||
: "Ir" (i), "m" (v->counter)
|
||||
@@ -682,10 +682,10 @@ static __inline__ long atomic64_sub_if_p
|
||||
" beqz %0, 2f \n"
|
||||
" dsubu %0, %1, %3 \n"
|
||||
" .set reorder \n"
|
||||
- "1: \n"
|
||||
" .subsection 2 \n"
|
||||
"2: b 1b \n"
|
||||
" .previous \n"
|
||||
+ "1: \n"
|
||||
" .set mips0 \n"
|
||||
: "=&r" (result), "=&r" (temp), "=m" (v->counter)
|
||||
: "Ir" (i), "m" (v->counter)
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
+ bugfix/mips/ip22_cache_shift.patch
|
||||
+ bugfix/mips/gbefb_fix_cmap_fifo_timeout.patch
|
||||
+ bugfix/mips/ip32_enable_fast_20.patch
|
||||
+ bugfix/mips/atomic_sub_if_positive.patch
|
||||
+ bugfix/arm/disable-dvb_b2c2_flexcop.patch
|
||||
+ bugfix/arm/disable-dvb_budget.patch
|
||||
+ bugfix/arm/disable-netxen_nic.patch
|
||||
|
|
Loading…
Reference in New Issue