Re: Flushing writes to PCI devices

linux-os (Dick Johnson)
2006-09-20T19:10:28Z

On Wed, 20 Sep 2006, Alan Stern wrote:

> I've heard that to insure proper synchronization it's necessary to flush
> MMIO writes (writel, writew, writeb) to PCI devices by reading from the
> same area. Is this equally true for I/O-space writes (inl, inw, inb)?
> What about configuration space writes (pci_write_config_dword etc.)?
>
> Alan Stern

Writes to I/O space are not queued through a FIFO so there is
no need to flush the FIFO. Configuration space uses special
configuration cycles which are handshakes with the devices. They
cannot be queued, therefore don't need to be flushed either.

Flushing PCI space writes shouldn't be done until you want
whatever you've been planning to happen __now__. Otherwise
the advantages of queued writes go away. In other words, one
should NOT attach a read to every PCI space write! Typically
use of the flushing read might be in the case of setting up
hardware for a DMA transfer. You write all the data, source
address, destination address, byte-count, DMA type, etc., then
after the last instruction, the one should should start the DMA,
you issue a read.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.16.24 on an i686 machine (5592.66 BogoMips).
New book: http://www.AbominableFirebug.com/
_
\x1a\x04

****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to DeliveryErrors@analogic.com - and destroy all copies of this information, including any attachments, without reading or disclosing them.

Thank you.