On Fri, Jan 20, 2012 at 11:18:38AM +0100, Manuel Bouyer wrote: > On Thu, Jan 19, 2012 at 08:45:41PM +0100, Martin Husemann wrote: > > Even if originally intended for something else, like Matt says, wouldn't it > > Why do you think BUS_SPACE_BARRIER_SYNC was intended for something else ? > I can't see how a write barrier that doesn't ensure the write has > reached the target (main or device memory) can be usefull.
My understanding of BUS_SPACE_BARRIER_SYNC is that no read issued before the barrier may satisfy or follow any read after the barrier, and no write before the barrier may follow or be combined with any write after the barrier. Likewise, no read or write before the barrier may follow a write or read, respectively, after the barrier. The reads and writes do NOT have to be completed when bus_space_barrier(...BUS_SPACE_BARRIER_SYNC...) returns. My interpretation of the manual is not very literal, but I believe that it's a fair description of what to expect on any non-fanciful implementation of bus_space(9) for memory-mapped PCI space, where writes can be posted. bus_space_barrier() is used so little that it may be better to document the semantics that are useful and feasible, and make sure that the implementations guarantte those semantics, than to spend a lot of time on the interpretation. Dave -- David Young dyo...@pobox.com Urbana, IL (217) 721-9981