Not sure how to interpret your top-posted response :)
It is normal in the definition of writel(), in arch code, but
inappropriate in drivers when they _use_ writel().
If I may generalize, arch code generally knows what it's doing, when it
uses volatile. OTOH, driver authors that use volatile generally do
/not/ know what they are doing.
Jeff
-