Re: Cache coherency... and locking

From: Manfred Spraul (manfred@colorfullife.com)
Date: Fri Jul 21 2000 - 06:47:53 EST


Keith Owens wrote:
>
> I could not find an absolute statement of this requirement, just lots
> of mail about spinlock optimisation that assume strong write ordering.
> See http://www.uwsg.iu.edu/hypermail/linux/kernel/9911.3/0148.html
> where Linus says "Basically, everybody agrees on ordering of writes".

That thread was about the ia32 architecture: we reduced the memory
ordering of spin_unlock() - it was a full memory barrier, now it's a
simple move - spin_unlock doesn't need to be a full memory barrier,
release semantics is sufficient. And on ia32, a simple move has release
semantics

>
> It would be nice if the kernel gods made a definitive statement about
> the need or otherwise for strong write ordering.
>

I'm interested in the ordering of atomic_xy and bit operations: I heard
that they must be full memory barriers, but at least the ia64 port only
uses a partial memory barrier.

> >Neither ia64 nor the other RISC processors guarantee strong write
> >ordering.
>
> IA64 load.acquire and store.release are available to do strong write
> ordering, although the default option is weak order.

Correct: the spinlock/semaphore functions use these .acquire and
.release asm instructions, but a simple

        global_variable_1 = 7;
        global_variable_2 = 9;

can be seen by other cpus in any order.

--
	Manfred

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Jul 23 2000 - 21:00:15 EST