I have a PCI device (32-bit/66MHz) that has a really poor DMA read rate (host
to device) that is somewhat decent in one machine (59MB/s) but is really poor
in another machine (4MB/s). The performance in the second machine is
equivalent to directly reading memory from the host 4-bytes at a time. The
DMA write rate (device to host), however, is roughly the same in both
machines and close to the theoretical (262MB/s). The device acts as the
master for both reads and writes.
I have a limited knowledge of the details of the PCI bus. Does this look
like an issue with the PCI bridges getting configured differently, resulting
in the read transactions being terminated prematurely? I have access to a PCI
analyzer and will be setting that up as soon as I have access to the machines
again, but I was wondering if this looks like something obvious to someone
more knowledgeable about the PCI bus.
Also, are there any parameters that can be tweaked to improve the read DMA
rate overall? I realize that this is probably highly dependent on the DMA
engine on the device itself.