drm/rockchip/rockchip_drm_gem.c: convert to use vm_map_pages()
Convert to use vm_map_pages() to map range of kernel memory to user vma. Tested on Rockchip hardware and display is working, including talking to Lima via prime. Link: http://lkml.kernel.org/r/7ba359eb1aceac388d05983c1f29b915bdf291f9.1552921225.git.jrdr.linux@gmail.com Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com> Tested-by: Heiko Stuebner <heiko@sntech.de> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: David Airlie <airlied@linux.ie> Cc: Joerg Roedel <joro@8bytes.org> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Juergen Gross <jgross@suse.com> Cc: Kees Cook <keescook@chromium.org> Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Mauro Carvalho Chehab <mchehab@infradead.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Cc: Pawel Osciak <pawel@osciak.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rik van Riel <riel@surriel.com> Cc: Robin Murphy <robin.murphy@arm.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Sandy Huang <hjc@rock-chips.com> Cc: Stefan Richter <stefanr@s5r6.in-berlin.de> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Thierry Reding <treding@nvidia.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
22660db892
commit
2f69b3c8ba
|
@ -221,26 +221,13 @@ static int rockchip_drm_gem_object_mmap_iommu(struct drm_gem_object *obj,
|
|||
struct vm_area_struct *vma)
|
||||
{
|
||||
struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
|
||||
unsigned int i, count = obj->size >> PAGE_SHIFT;
|
||||
unsigned int count = obj->size >> PAGE_SHIFT;
|
||||
unsigned long user_count = vma_pages(vma);
|
||||
unsigned long uaddr = vma->vm_start;
|
||||
unsigned long offset = vma->vm_pgoff;
|
||||
unsigned long end = user_count + offset;
|
||||
int ret;
|
||||
|
||||
if (user_count == 0)
|
||||
return -ENXIO;
|
||||
if (end > count)
|
||||
return -ENXIO;
|
||||
|
||||
for (i = offset; i < end; i++) {
|
||||
ret = vm_insert_page(vma, uaddr, rk_obj->pages[i]);
|
||||
if (ret)
|
||||
return ret;
|
||||
uaddr += PAGE_SIZE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return vm_map_pages(vma, rk_obj->pages, count);
|
||||
}
|
||||
|
||||
static int rockchip_drm_gem_object_mmap_dma(struct drm_gem_object *obj,
|
||||
|
|
Loading…
Reference in New Issue