Messages in this thread | | | Date | Thu, 06 Jul 2006 13:04:22 -0400 | From | Jeff Garzik <> | Subject | Re: [patch] spinlocks: remove 'volatile' |
| |
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
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |