Re: [patch 2] mm: speculative get_page

Jesse Barnes
2005-06-28T21:35:24Z

On Monday, June 27, 2005 10:08 pm, David S. Miller wrote:
> From: Nick Piggin <nickpiggin@yahoo.com.au>
> Subject: Re: [patch 2] mm: speculative get_page
> Date: Tue, 28 Jun 2005 14:50:31 +1000
>
> > William Lee Irwin III wrote:
> > >On Tue, Jun 28, 2005 at 11:42:16AM +1000, Nick Piggin wrote:
> > >
> > >spin_unlock() does not imply a memory barrier.
> >
> > Intriguing...
>
> BTW, I disagree with this assertion. spin_unlock() does imply a
> memory barrier.
>
> All memory operations before the release of the lock must execute
> before the lock release memory operation is globally visible.

On ia64 at least, the unlock is only a one way barrier. The store to
realease the lock uses release semantics (since the lock is declared
volatile), which implies that prior stores are visible before the
unlock occurs, but subsequent accesses can 'float up' above the unlock.
See http://www.gelato.unsw.edu.au/linux-ia64/0304/5122.html for some
more details.

Jesse