Ira,

On Mon, May 23, 2011 at 11:12:41AM +0200, Andre Schwarz wrote:
Ira,

we have a pretty old PCI device driver here that needs some basic rework
running on 2.6.27 on several MPC83xx.
It's a simple char-device with "give me some data" implemented using
read() resulting in zero-copy DMA to user mem.

There's get_user_pages() working under the hood along with
SetPageDirty() and page_cache_release().

Main goal is to prepare a sg-list that gets fed into a DMA controller.

I wonder if there's a more up-to-date/efficient and future proof scheme
of creating the mapping.


Could you provide some pointers or would you stick to the current scheme ?

This scheme is the best you'll come up with for zero-copy IO. I used
get_user_pages_fast(), but otherwise my implementation was the same.
These interfaces should be fairly future proof.
excellent - thanks.
Will stick to it then ...
In the end, I realized that most of my transfers were 4 bytes in length,
and zero copy IO was a waste of effort. I decided to use mmap instead.


I'm using 98% page sized (4KiB) scatter gather transfers summing up to ~80MiB/sec sustained throughput.




Cheers,
André

MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to