lkml.org 
[lkml]   [2006]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch 00/21] mutex subsystem, -V14

>>Anyway, here is some disassembly of some of the code generated with my
>>comments:
>>
>>c00000000049bf9c <.mutex_lock>:
>>c00000000049bf9c: 7c 00 06 ac eieio
>>c00000000049bfa0: 7d 20 18 28 lwarx r9,r0,r3
>>c00000000049bfa4: 31 29 ff ff addic r9,r9,-1
>
>
>>The eieio is completly unnecessary, it got picked up from
>>atomic_dec_return (Anton, why is there an eieio at the start of
>>atomic_dec_return in the first place?).
>
>
> a mutex is like a spinlock, it must prevent loads and stores within the
> critical section from 'leaking outside the critical section' [they must
> not be reordered to before the mutex_lock(), nor to after the
> mutex_unlock()] - hence the barriers added by atomic_dec_return() are
> very much needed.

The bne- and isync together form a sufficient import barrier. See PowerPC Book2
Appendix B.2.1.1

And if the eieio was necessary it should come after not before twidling the lock
bits.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-01-05 17:44    [W:0.501 / U:0.120 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site