PCIe Access - achieve bursts without DMA

Moese, Michael michael.moese at men.de
Thu Jan 30 23:20:21 EST 2014

Hello PPC-developers,
I'm currently trying to benchmark access speeds to our PCIe-connected IP-cores
located inside our FPGA. On x86-based systems I was able to achieve bursts for
both read and write access. On PPC32, using an e500v2, I had no success at all 
so far. 
I tried using ioremap_wc(), like I did on x86, for writing, and it only results in my
writes just being single requests, one after another.
For reads, I noticed I could not ioremap_cache() on PPC, so I used simple ioremap()
I used several ways to read from the device, from simple readl(),memcpy_from_io(), 
memcpy()  to cacheable_memcpy() - with no improvements.  Even when just issuing
a batch of prefetch()-calls for all the memory to read did not result in read bursts.

I only get really poor results, writing is possible with around 40 MiByte/s, whereas I  
can read at about only 3 MiByte/s.
After hours of studying the reference manual from freescale, looking into other code
and searching the web, I'm close to resignation.

Maybe someone of you has some more directions for me, I'd appreciate every hint
that leads me to my problem's solution - maybe I just missed something or lack 
knowledge about this architecture in general.

Thanks for your reading.


More information about the Linuxppc-dev mailing list