drm/shmem-helper: Pass GEM shmem object in public interfaces
Change all GEM SHMEM object functions that receive a GEM object of type struct drm_gem_object to expect an object of type struct drm_gem_shmem_object instead. This change reduces the number of upcasts from struct drm_gem_object by moving them into callers. The C compiler can now verify that the GEM SHMEM functions are called with the correct type. For consistency, the patch also renames drm_gem_shmem_free_object to drm_gem_shmem_free. It further updates documentation for a number of functions. v3: * fix docs for drm_gem_shmem_object_free() v2: * mention _object_ callbacks in docs (Daniel) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20211108093149.7226-4-tzimmermann@suse.de
This commit is contained in:
@@ -79,10 +79,10 @@ void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo)
|
||||
sg_free_table(shmem->pages);
|
||||
kfree(shmem->pages);
|
||||
shmem->pages = NULL;
|
||||
drm_gem_shmem_unpin(&bo->base.base);
|
||||
drm_gem_shmem_unpin(&bo->base);
|
||||
}
|
||||
|
||||
drm_gem_shmem_free_object(&bo->base.base);
|
||||
drm_gem_shmem_free(&bo->base);
|
||||
} else if (virtio_gpu_is_vram(bo)) {
|
||||
struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
|
||||
|
||||
@@ -156,7 +156,7 @@ static int virtio_gpu_object_shmem_init(struct virtio_gpu_device *vgdev,
|
||||
struct scatterlist *sg;
|
||||
int si, ret;
|
||||
|
||||
ret = drm_gem_shmem_pin(&bo->base.base);
|
||||
ret = drm_gem_shmem_pin(&bo->base);
|
||||
if (ret < 0)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -166,9 +166,9 @@ static int virtio_gpu_object_shmem_init(struct virtio_gpu_device *vgdev,
|
||||
* dma-ops. This is discouraged for other drivers, but should be fine
|
||||
* since virtio_gpu doesn't support dma-buf import from other devices.
|
||||
*/
|
||||
shmem->pages = drm_gem_shmem_get_sg_table(&bo->base.base);
|
||||
shmem->pages = drm_gem_shmem_get_sg_table(&bo->base);
|
||||
if (!shmem->pages) {
|
||||
drm_gem_shmem_unpin(&bo->base.base);
|
||||
drm_gem_shmem_unpin(&bo->base);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -276,6 +276,6 @@ err_put_objs:
|
||||
err_put_id:
|
||||
virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
|
||||
err_free_gem:
|
||||
drm_gem_shmem_free_object(&shmem_obj->base);
|
||||
drm_gem_shmem_free(shmem_obj);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user