this feature could be used to use memory region allocated by malloc() in user mode and mmaped memory region allocated by other memory allocators. userptr interface can identify memory type through vm_flags value and would get pages or page frame numbers to user space appropriately.
changelog v2: the memory region mmaped with VM_PFNMAP type is physically continuous and start address of the memory region should be set into buf->dma_addr but previous patch had a problem that end address is set into buf->dma_addr so v2 fixes that problem. changelog v3: mitigated the issues pointed out by Dave and Jerome. for this, added some codes to guarantee the pages to user space not to be swapped out, the VMAs within the user space would be locked and then unlocked when the pages are released. but this lock might result in significant degradation of system performance because the pages couldn't be swapped out so added one more feature that we can limit user-desired userptr size to pre-defined value using userptr limit ioctl that can be accessed by only root user. these issues had been pointed out by Dave and Jerome. Inki Dae (2): drm/exynos: added userptr limit ioctl. drm/exynos: added userptr feature. drivers/gpu/drm/exynos/exynos_drm_drv.c | 8 + drivers/gpu/drm/exynos/exynos_drm_drv.h | 6 + drivers/gpu/drm/exynos/exynos_drm_gem.c | 356 +++++++++++++++++++++++++++++++ drivers/gpu/drm/exynos/exynos_drm_gem.h | 20 ++- include/drm/exynos_drm.h | 43 ++++- 5 files changed, 430 insertions(+), 3 deletions(-) -- 1.7.4.1