staging: android: ion: Remove import interface
With the expansion of dma-buf and the move for Ion to be come just an allocator, the import mechanism is mostly useless. There isn't a kernel component to Ion anymore and handles are private to Ion. Remove this interface. Signed-off-by: Laura Abbott <labbott@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
73794b373f
commit
4c23cbff07
@ -145,7 +145,6 @@ long compat_ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||||||
}
|
}
|
||||||
case ION_IOC_SHARE:
|
case ION_IOC_SHARE:
|
||||||
case ION_IOC_MAP:
|
case ION_IOC_MAP:
|
||||||
case ION_IOC_IMPORT:
|
|
||||||
return filp->f_op->unlocked_ioctl(filp, cmd,
|
return filp->f_op->unlocked_ioctl(filp, cmd,
|
||||||
(unsigned long)compat_ptr(arg));
|
(unsigned long)compat_ptr(arg));
|
||||||
default:
|
default:
|
||||||
|
@ -131,17 +131,6 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||||||
ret = data.fd.fd;
|
ret = data.fd.fd;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ION_IOC_IMPORT:
|
|
||||||
{
|
|
||||||
struct ion_handle *handle;
|
|
||||||
|
|
||||||
handle = ion_import_dma_buf_fd(client, data.fd.fd);
|
|
||||||
if (IS_ERR(handle))
|
|
||||||
ret = PTR_ERR(handle);
|
|
||||||
else
|
|
||||||
data.handle.handle = handle->id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ION_IOC_HEAP_QUERY:
|
case ION_IOC_HEAP_QUERY:
|
||||||
ret = ion_query_heaps(client, &data.query);
|
ret = ion_query_heaps(client, &data.query);
|
||||||
break;
|
break;
|
||||||
|
@ -274,24 +274,6 @@ int ion_handle_put(struct ion_handle *handle)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ion_handle *ion_handle_lookup(struct ion_client *client,
|
|
||||||
struct ion_buffer *buffer)
|
|
||||||
{
|
|
||||||
struct rb_node *n = client->handles.rb_node;
|
|
||||||
|
|
||||||
while (n) {
|
|
||||||
struct ion_handle *entry = rb_entry(n, struct ion_handle, node);
|
|
||||||
|
|
||||||
if (buffer < entry->buffer)
|
|
||||||
n = n->rb_left;
|
|
||||||
else if (buffer > entry->buffer)
|
|
||||||
n = n->rb_right;
|
|
||||||
else
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
return ERR_PTR(-EINVAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
|
struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
|
||||||
int id)
|
int id)
|
||||||
{
|
{
|
||||||
@ -1023,64 +1005,6 @@ int ion_share_dma_buf_fd(struct ion_client *client, struct ion_handle *handle)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ion_share_dma_buf_fd);
|
EXPORT_SYMBOL(ion_share_dma_buf_fd);
|
||||||
|
|
||||||
struct ion_handle *ion_import_dma_buf(struct ion_client *client,
|
|
||||||
struct dma_buf *dmabuf)
|
|
||||||
{
|
|
||||||
struct ion_buffer *buffer;
|
|
||||||
struct ion_handle *handle;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* if this memory came from ion */
|
|
||||||
|
|
||||||
if (dmabuf->ops != &dma_buf_ops) {
|
|
||||||
pr_err("%s: can not import dmabuf from another exporter\n",
|
|
||||||
__func__);
|
|
||||||
return ERR_PTR(-EINVAL);
|
|
||||||
}
|
|
||||||
buffer = dmabuf->priv;
|
|
||||||
|
|
||||||
mutex_lock(&client->lock);
|
|
||||||
/* if a handle exists for this buffer just take a reference to it */
|
|
||||||
handle = ion_handle_lookup(client, buffer);
|
|
||||||
if (!IS_ERR(handle)) {
|
|
||||||
ion_handle_get(handle);
|
|
||||||
mutex_unlock(&client->lock);
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
handle = ion_handle_create(client, buffer);
|
|
||||||
if (IS_ERR(handle)) {
|
|
||||||
mutex_unlock(&client->lock);
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = ion_handle_add(client, handle);
|
|
||||||
mutex_unlock(&client->lock);
|
|
||||||
if (ret) {
|
|
||||||
ion_handle_put(handle);
|
|
||||||
handle = ERR_PTR(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
end:
|
|
||||||
return handle;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(ion_import_dma_buf);
|
|
||||||
|
|
||||||
struct ion_handle *ion_import_dma_buf_fd(struct ion_client *client, int fd)
|
|
||||||
{
|
|
||||||
struct dma_buf *dmabuf;
|
|
||||||
struct ion_handle *handle;
|
|
||||||
|
|
||||||
dmabuf = dma_buf_get(fd);
|
|
||||||
if (IS_ERR(dmabuf))
|
|
||||||
return ERR_CAST(dmabuf);
|
|
||||||
|
|
||||||
handle = ion_import_dma_buf(client, dmabuf);
|
|
||||||
dma_buf_put(dmabuf);
|
|
||||||
return handle;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(ion_import_dma_buf_fd);
|
|
||||||
|
|
||||||
int ion_query_heaps(struct ion_client *client, struct ion_heap_query *query)
|
int ion_query_heaps(struct ion_client *client, struct ion_heap_query *query)
|
||||||
{
|
{
|
||||||
struct ion_device *dev = client->dev;
|
struct ion_device *dev = client->dev;
|
||||||
|
@ -184,15 +184,6 @@ struct ion_heap_query {
|
|||||||
*/
|
*/
|
||||||
#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data)
|
#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data)
|
||||||
|
|
||||||
/**
|
|
||||||
* DOC: ION_IOC_IMPORT - imports a shared file descriptor
|
|
||||||
*
|
|
||||||
* Takes an ion_fd_data struct with the fd field populated with a valid file
|
|
||||||
* descriptor obtained from ION_IOC_SHARE and returns the struct with the handle
|
|
||||||
* filed set to the corresponding opaque handle.
|
|
||||||
*/
|
|
||||||
#define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, struct ion_fd_data)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: ION_IOC_HEAP_QUERY - information about available heaps
|
* DOC: ION_IOC_HEAP_QUERY - information about available heaps
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user