[PATCH] drm/shmem-helpers: Simplify dma-buf importing
Boris Brezillon
boris.brezillon at collabora.com
Fri May 29 13:49:23 UTC 2020
On Wed, 20 May 2020 20:02:32 +0200
Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> @@ -695,36 +702,16 @@ drm_gem_shmem_prime_import_sg_table(struct drm_device *dev,
> struct sg_table *sgt)
> {
> size_t size = PAGE_ALIGN(attach->dmabuf->size);
> - size_t npages = size >> PAGE_SHIFT;
> struct drm_gem_shmem_object *shmem;
> - int ret;
>
> shmem = drm_gem_shmem_create(dev, size);
> if (IS_ERR(shmem))
> return ERR_CAST(shmem);
>
> - shmem->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL);
> - if (!shmem->pages) {
> - ret = -ENOMEM;
> - goto err_free_gem;
> - }
> -
> - ret = drm_prime_sg_to_page_addr_arrays(sgt, shmem->pages, NULL, npages);
> - if (ret < 0)
> - goto err_free_array;
> -
> shmem->sgt = sgt;
> - shmem->pages_use_count = 1; /* Permanently pinned from our point of view */
Keep the above line and that should be good.
>
> DRM_DEBUG_PRIME("size = %zu\n", size);
>
> return &shmem->base;
> -
> -err_free_array:
> - kvfree(shmem->pages);
> -err_free_gem:
> - drm_gem_object_put(&shmem->base);
> -
> - return ERR_PTR(ret);
> }
> EXPORT_SYMBOL_GPL(drm_gem_shmem_prime_import_sg_table);
More information about the dri-devel
mailing list