On Gwe, 2005-07-01 at 15:43, Maciej W. Rozycki wrote: > But that mentions compiler only, not CPU ordering! I understand the BIU > of the issuing CPU and any external hardware is still permitted to > merge/reorder these accesses unless separated by wmb()/rmb()/mb() as I think the practical situation is that this implies ordering to the bus interface. It might be interesting to ask the powerpc people their experience but looking at most PCI drivers they assume this and it would be expensive not to do so on x86. > We have that iob() macro/call as well, so that you can push cycles out of > the CPU domain immediately as well, which is equivalent to: > mb(); > make_host_complete_writes(); My feeling is the default readb etc are __readb + mb + make_hos... > So far I've been able to get away with that iob() function, but if the > bus and buffering hierarchy gets even more complicated, there may be more > barriers like this needed. Agreed - and we now have the device model so we can actually do that by passing a device pointer.