Re: [patch] spinlocks: remove 'volatile'

Jeff Garzik
2006-07-06T17:04:30Z

Linus Torvalds wrote:
>
> On Thu, 6 Jul 2006, Linus Torvalds wrote:
>> Any other use of "volatile" is almost certainly a bug, or just useless.
>
> Side note: it's also totally possible that a volatiles _hides_ a bug, ie
> removing the volatile ends up having bad effects, but that's because the
> software itself isn't actually following the rules (or, more commonly, the
> rules are broken, and somebody added "volatile" to hide the problem).
>
> That's not just a theoretical notion, btw. We had _tons_ of these kinds of
> "volatile"s in the original old networking code. They were _all_ wrong.
> Every single one.

I see precisely what you describe in newly submitted network _drivers_,
too. People use volatile to cover up missing barriers; to attempt to
cover up missing flushes (needing readl after a writel); to hide the
fact that the driver sometimes uses writel() and sometimes just does a
direct de-ref into MMIO space.

To my view, seeing "volatile" in code is often a "I was too lazy to
debug the code" or "I was too lazy to make my code portable" situation.

Jeff