[PATCH 2/2 v4] drm/exynos: added userptr feature.
inki.dae at samsung.com
Sun May 13 23:52:37 PDT 2012
> -----Original Message-----
> From: KOSAKI Motohiro [mailto:kosaki.motohiro at gmail.com]
> Sent: Monday, May 14, 2012 3:33 PM
> To: Inki Dae
> Cc: airlied at linux.ie; dri-devel at lists.freedesktop.org; j.glisse at gmail.com;
> minchan at kernel.org; kyungmin.park at samsung.com; sw0312.kim at samsung.com;
> jy0922.shim at samsung.com
> Subject: Re: [PATCH 2/2 v4] drm/exynos: added userptr feature.
> > + npages = buf->size >> PAGE_SHIFT;
> Why round down? usually we use round up.
The size was already rounded up by exynos_drm_gem_userptr_ioctl so this is
just used to get page count.
> > + down_read(¤t->mm->mmap_sem);
> > +
> > + /*
> > + * Basically, all the pages from get_user_pages() can not be not
> > + * migrated by CMA but also swapped out.
> > + *
> > + * The migration issue.
> > + * - Pages reserved by CMA for some device using DMA could be
> used by
> > + * kernel and if the device driver wants to use those pages
> > + * while being used by kernel then the pages are copied into
> > + * other ones allocated to migrate them and then finally,
> > + * the device driver can use the pages for itself.
> > + * Thus, migrated, the pages being accessed by DMA could be
> > + * to other so this situation may incur that DMA accesses any
> > + * it doesn't want.
> > + *
> > + * But the use of get_user_pages is safe from such magration
> > + * because all the pages from get_user_pages CAN NOT be not only
> > + * migrated, but also swapped out.
> > + */
> > + get_npages = get_user_pages(current, current->mm, userptr,
> > + npages, write, 1, buf->pages,
> Why force=1? It is almostly core-dump specific option. Why don't you
I know that force indicates whether to force write access even if user
mapping is readonly. so we just want to use pages from get_user_pages as
> EFAULT when the page has write permission. IOW, Why your Xorg module
> don't map memory w/ PROT_WRITE?
No, Xorg can map memory w/ PROT_WRITE. Couldn't the Xorg map w/ PROT_WRITE
if force = 1? plz, let me know if there is my missing point.
> > + up_read(¤t->mm->mmap_sem);
> > + if (get_npages != npages)
> > + DRM_ERROR("failed to get user_pages.\n");
More information about the dri-devel