Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Paul Mackerras <hidden>
Date: 2007-08-16 06:00:31
Also in:
linux-arch, lkml
From: Paul Mackerras <hidden>
Date: 2007-08-16 06:00:31
Also in:
linux-arch, lkml
Herbert Xu writes:
It doesn't matter. The memory pressure flag is an *advisory* flag. If we get it wrong the worst that'll happen is that we'd waste some time doing work that'll be thrown away.
Ah, so it's the "racy but I don't care because it's only an optimization" case. That's fine. Somehow I find it hard to believe that all the racy uses of atomic_read in the kernel are like that, though. :)
In any case, this actually illustrates why the addition of volatile is completely pointless. Even if this code was broken, which it definitely is not, having the volatile there wouldn't have helped at all.
Yes, adding volatile to racy code doesn't somehow make it race-free. Neither does using atomic_t, despite what some seem to believe. I have actually started going through all the uses of atomic_read in the kernel. So far out of the first 100 I have found none where we have two atomic_reads of the same variable and the compiler could usefully use the value from the first as the result of the second. But there's still > 2500 to go... Paul.