Re: [PATCH] Document Linux's memory barriers [try #4]

David Howells
2006-03-14T23:59:46Z

Paul Mackerras <paulus@samba.org> wrote:

> No, that's not the problem. The problem is that you can get q == &b
> and d == 1, believe it or not. That is, you can see the new value of
> the pointer but the old value of the thing pointed to.

But that doesn't make any sense!

That would mean we that we'd've read b into d before having read the new value
of p into q, and thus before having calculated the address from which to read d
(ie: &b) - so how could we know we were supposed to read d from b and not from
a without first having read p?

Unless, of course, the smp_wmb() isn't effective, and the write to b happens
after the write to p; or the Alpha's cache isn't fully coherent.

David