Re: [PATCH] Define wc_wmb, a write barrier for PCI write combining

From: Jes Sorensen
Date: Tue Feb 28 2006 - 12:18:28 EST


Roland Dreier wrote:
Jes> Not quite correct as far as I understand it. mmiowb() is
Jes> supposed to guarantee that writes to MMIO space have
Jes> completed before continuing. That of course covers the
Jes> multi-CPU case, but it should also cover the write-combining
Jes> case.

I don't believe this is correct. mmiowb() does not guarantee that
writes have completed -- they may still be pending in a buffer in a
bridge somewhere. The _only_ effect of mmiowb() is to make sure that
writes which have been ordered between CPUs using some other mechanism
(i.e. a lock) are properly ordered by the rest of the system. This
only has an effect systems like very large ia64 systems, where (as I
understand it), writes can pass each other on the way to the PCI bus.
In fact, mmiowb() is a NOP on essentially every architecture.

Hmmmm

That could be, seems like Jesse agrees that it could all be in the
pipeline somewhere. Considering Jesse was responsible for mmiowb() I'll
take his word for it ;-)

In any case, I'd strongly recommend that any new barrier version is
clearly documented. The jungle is very dense already ;(

Cheers,
Jes
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/