On 2002.04.30 17:19 Kai Germaschewski wrote:
> On Tue, 30 Apr 2002, Josť Fonseca wrote:
> > - should one in general (i.e., assuming the worst case) do wmb() on
> > writes, and mb() on reads?
> I don't think mb() will help you. You're probably experiencing PCI
> problems - when a writel() has executed, that doesn't necessarily mean
> that the transaction has actually happened it may (and will) be buffered
> for a potentially long time.
> However, PCI won't reorder reads vs. writes, so you when you want to be
> sure that a write() actually reached the hardware, do a dummy read()
> afterwards, that'll flush the write buffer.
Unfortunately one of the problems occurs in a idle wait loop, when a
register is being sucessively read.
And if so, how the wmb() example in "Linux Device Drivers"
(http://www.xml.com/ldd/chapter/book/ch08.html#t1) can be explained? The
"Bus-Independent Device Accesses"
refers what you suggested, but it also mentions the use of memory
barriers. So how and when should they be used?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/