Freescale P2020/ 85xx PCIe: DMA low throughtput
Jenkins, Clive
Clive.Jenkins at xerox.com
Wed Oct 27 22:28:21 EST 2010
> Hi,
>
> I'm working on bring up for a new board based on
Freescales p2020.
> I have a programmable FPGA as a PCIe device with a
buffer I can
> write to and from.
> I want to test performence for the PCIe bus.
> I encountered a problem while doing a DMA between the
FPGA & DDR.
> The whole buffer moves to and from the device with
out
> mismatches but with low throughtput.
> The thing is that the buffer divided to many
transactions of byte
> size instead of transferring it in a burst.
> I must mention that even a buffer of word size, divided
in to byte
> transactions by the DMA (the core can read a word so it
seems like
> the DMA fault.
> I tried to change the latency timer, max latency, min
latency and
> cache line in the configuration space of both sides of
the pcie
> bus. It didn't help.
> Do you have an idea what can it be?
>
> Thanks,
> Natalie.
>
>
>
> Assuming the P2020 has the usual 85xx-style DMA engine, you may
have
> the Band Width Control cleared to 0. This 4-bit field (BWC)
restricts
> the transfer size to 2^BWC bytes, for BWC=0,1,..0xa. 0xb-0xe are
> reserved. 0xf disables bandwidth sharing to allow uninterrupted
> transfers from each channel, so if you are using several
channels
> one channel can completely lock out other channels. BWC=0x8 at
reset
> (2^8 = 256 bytes). See the P2020 manual for more details.
>
> BWC is the field with mask 0x0f000000 in the MR (Master Reset)
> register for the channel (0, 1, 2, 3), at offset 0x100, 0x180,
0x200,
> 0x280 relative to the base of the DMA controller.
>
> Clive
>
>
>
>
> Hi, Thanks.
> I changed the BWC but the transactions are still in a byte size
instead
> of burst. Do you have another idea?
>
> Natalie.
Sorry, no.
Are you sure you have modified the FSL-DMA driver in the kernel so it
does not
write zero to BWC?
Clive
More information about the Linuxppc-dev
mailing list