lkml.org 
[lkml]   [2010]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: UIO DMA to userspace question
From
Hello Hans,

On Tue, Aug 10, 2010 at 2:12 AM, Hans J. Koch <hjk@linutronix.de> wrote:
> On Mon, Aug 09, 2010 at 01:11:56PM +0200, Hans J. Koch wrote:
>> On Sat, Aug 07, 2010 at 08:38:30PM +0200, Leon Woestenberg wrote:
>> > Hello all,
>> >
>> > can I use the UIO framework for the following?
>> >
>> > The userspace portion of the driver allocates memory in user-space
>> > using malloc() - usually resulting in a scatter pages in physical
>> > memory.
>> > The UIO kernel portion of the driver maps those using pci_map_sg().
>> >
>> > Is this possible, or does the UIO framework assume memory for DMA is
>> > allocated in kernel space?
>>
>> You would have to write your own mmap() function and and set the pointer
>> to it in struct uio_info->mmap. Have a look at uio_mmap() in
>
Why would I need to mmap() the user space memory into kernel space?

Looking from a traditional device driver perspective the kernel space
only needs to know the virtual address and the length of the buffer,
and can then make up a scatter list.

After DMA finished, it needs to synchronize caches.

In fact, from my simplistic view, the kernel provides a few internal
house keeping tools, and we need to export this functionality into UIO
API's.

SGDMA to from user memory would be one of the uses.

In fact, when UIO started, I also expected the kernel buffers to be
user application managed, like the driver steering code.

> uio_info->mmap pointer was made for unusual mappings. But it still causes
> me some headaches. I'm not sure if this can be considered a clean solution.
> An extension that makes UIO deal properly with dynamically allocated (DMA-)
> memory would certainly be preferable.
>
Thanks for thinking along.

I am currently refraining from using UIO, as I don't like the head
ache feature :-)

Regards,
--
Leon


\
 
 \ /
  Last update: 2010-08-11 20:45    [W:0.051 / U:0.892 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site