On 31/07/17 10:10 AM, Andy Shevchenko wrote: > Some drivers (hardware) would like to have non-atomic MMIO accesses > when readq() defined Huh? But that's the whole point of the io64-nonatomic header. If a driver wants a specific non-atomic access they should just code two 32 bit accesses. > In case of readq() / writeq() it's defined by the order of inclusion: > > 1) > include <...non-atomic...> > include <linux/io.h> > > Always non-atomic will be used. I'm afraid you're wrong about this. The io-64-nonatomic-xx header includes linux/io.h. Thus the order of the includes doesn't matter and it will always auto switch. In any case, making an interface do different things depending on the order of include files is *completely* insane. > P.S. I have done a table of comparison between IO accessors in Linux > kernel and it looks hell out of being consistent. There are a few corner oddities but it's really not that bad. Most things are done for a reason if you dig into them. Logan