Revert "drm/drm-prime: cache dma_buf import context"

This reverts commit 09d07c8016.

Change-Id: Ifb57a691d55e108589b77037a9b9d88328cd9415
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
Sandy Huang
2020-07-23 16:52:18 +08:00
committed by Tao Huang
parent 1484f3cf59
commit d7bc7fe3a6

View File

@@ -91,13 +91,6 @@ struct drm_prime_attachment {
enum dma_data_direction dir;
};
#ifdef CONFIG_ARCH_ROCKCHIP
struct drm_prime_callback_data {
struct drm_gem_object *obj;
struct sg_table *sgt;
};
#endif
static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv,
struct dma_buf *dma_buf, uint32_t handle)
{
@@ -685,25 +678,6 @@ out_unlock:
}
EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
#ifdef CONFIG_ARCH_ROCKCHIP
static void drm_gem_prime_dmabuf_release_callback(void *data)
{
struct drm_prime_callback_data *cb_data = data;
if (cb_data && cb_data->obj && cb_data->obj->import_attach) {
struct dma_buf_attachment *attach = cb_data->obj->import_attach;
struct sg_table *sgt = cb_data->sgt;
if (sgt)
dma_buf_unmap_attachment(attach, sgt,
DMA_BIDIRECTIONAL);
dma_buf_detach(attach->dmabuf, attach);
drm_gem_object_put_unlocked(cb_data->obj);
kfree(cb_data);
}
}
#endif
/**
* drm_gem_prime_mmap - PRIME mmap function for GEM drivers
* @obj: GEM object
@@ -758,9 +732,6 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
struct dma_buf_attachment *attach;
struct sg_table *sgt;
struct drm_gem_object *obj;
#ifdef CONFIG_ARCH_ROCKCHIP
struct drm_prime_callback_data *cb_data = NULL;
#endif
int ret;
if (dma_buf->ops == &drm_gem_prime_dmabuf_ops) {
@@ -775,15 +746,6 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
}
}
#ifdef CONFIG_ARCH_ROCKCHIP
cb_data = dma_buf_get_release_callback_data(dma_buf,
drm_gem_prime_dmabuf_release_callback);
if (cb_data && cb_data->obj && cb_data->obj->dev == dev) {
drm_gem_object_get(cb_data->obj);
return cb_data->obj;
}
#endif
if (!dev->driver->gem_prime_import_sg_table)
return ERR_PTR(-EINVAL);
@@ -793,14 +755,6 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
get_dma_buf(dma_buf);
#ifdef CONFIG_ARCH_ROCKCHIP
cb_data = kmalloc(sizeof(*cb_data), GFP_KERNEL);
if (!cb_data) {
ret = -ENOMEM;
goto fail_detach;
}
#endif
sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL);
if (IS_ERR(sgt)) {
ret = PTR_ERR(sgt);
@@ -815,23 +769,11 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
obj->import_attach = attach;
#ifdef CONFIG_ARCH_ROCKCHIP
cb_data->obj = obj;
cb_data->sgt = sgt;
dma_buf_set_release_callback(dma_buf,
drm_gem_prime_dmabuf_release_callback, cb_data);
dma_buf_put(dma_buf);
drm_gem_object_get(obj);
#endif
return obj;
fail_unmap:
dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL);
fail_detach:
#ifdef CONFIG_ARCH_ROCKCHIP
kfree(cb_data);
#endif
dma_buf_detach(dma_buf, attach);
dma_buf_put(dma_buf);