Re: Memory sharing issue by application on V4L2 based device driver
From: daeinki <inki.dae@samsung.com>
Date: 2011-01-07 10:02:15
Also in:
linux-arm-kernel, linux-media
Michel Dänzer 쓴 글:
On Fre, 2011-01-07 at 11:17 +0900, InKi Dae wrote:quoted
thank you for your comments. your second comment has no any problem as I said before, user virtual addess could be translated in page unit. but the problem, as you said, is that when cpu access to the memory in user mode, the memory allocated by malloc, page fault occurs so we can't find pfn to user virtual address. I missed that. but I think we could resolve this one. as before, user application allocates memory through malloc function and then send it to device driver(using userptr feature). if the pfn is null when device driver translated user virtual address in page unit then it allocates phsical memory in page unit using some interface such as alloc_page() and then mapping them. when pfn is null, to check it and allocate physical memory in page unit could be processed by videobuf2. of course, videobuf2 has no any duty considered for system mmu. so videobuf2 just provides callback for 3rd party and any platform with system mmu such as Samsung SoC C210 implements the function(allocating physical memory and mapping it) and registers it to callback of videobuf2. by doing so, I think your first comment could be cleared.FWIW, TTM (drivers/gpu/drm/ttm, include/drm/ttm) is designed and used for managing memory between CPU/GPU and kernel/userspace access. I haven't looked at your requirements in detail, but if you haven't looked at TTM yet, it sounds like it might be worth a look.
Thank you for your advice. I would look at TTM driver.