Re: PCI DMA to user mem on mpc83xx
From: Ira W. Snyder <hidden>
Date: 2011-05-23 17:27:31
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. 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. Ira