mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-23 04:59:05 -04:00
Merge "soc: qcom: mem-buf: Add support for consumers to import dma-bufs"
This commit is contained in:
commit
da16bbb59f
12 changed files with 1253 additions and 59 deletions
|
|
@ -56,13 +56,13 @@ struct mem_buf_ion_data {
|
|||
};
|
||||
|
||||
/**
|
||||
* struct mem_buf_alloc_ioctl_arg: An request to allocate memory from another
|
||||
* struct mem_buf_alloc_ioctl_arg: A request to allocate memory from another
|
||||
* VM to other VMs.
|
||||
* @size: The size of the allocation.
|
||||
* @nr_acl_entries: The number of ACL entries in @acl_list.
|
||||
* @acl_list: An array of structures, where each structure specifies a VMID
|
||||
* and the access permissions that the VMID will have to the memory to be
|
||||
* allocated.
|
||||
* @nr_acl_entries: The number of ACL entries in @acl_list.
|
||||
* @src_mem_type: The type of memory that the source VM should allocate from.
|
||||
* This should be one of the mem_buf_mem_type enum values.
|
||||
* @src_data: A pointer to data that the source VM should interpret when
|
||||
|
|
@ -70,25 +70,25 @@ struct mem_buf_ion_data {
|
|||
* @dst_mem_type: The type of memory that the destination VM should treat the
|
||||
* incoming allocation from the source VM as. This should be one of the
|
||||
* mem_buf_mem_type enum values.
|
||||
* @dst_data: A pointer to data that the destination VM should interpret when
|
||||
* adding the memory to the current VM.
|
||||
* @mem_buf_fd: A file descriptor representing the memory that was allocated
|
||||
* from the source VM and added to the current VM. Calling close() on this file
|
||||
* descriptor will deallocate the memory from the current VM, and return it
|
||||
* to the source VM.
|
||||
* * @dst_data: A pointer to data that the destination VM should interpret when
|
||||
* adding the memory to the current VM.
|
||||
*
|
||||
* All reserved fields must be zeroed out by the caller prior to invoking the
|
||||
* allocation IOCTL command with this argument.
|
||||
*/
|
||||
struct mem_buf_alloc_ioctl_arg {
|
||||
__u64 size;
|
||||
__u32 nr_acl_entries;
|
||||
__u64 acl_list;
|
||||
__u32 nr_acl_entries;
|
||||
__u32 src_mem_type;
|
||||
__u64 src_data;
|
||||
__u32 dst_mem_type;
|
||||
__u64 dst_data;
|
||||
__u32 mem_buf_fd;
|
||||
__u64 dst_data;
|
||||
__u64 reserved0;
|
||||
__u64 reserved1;
|
||||
__u64 reserved2;
|
||||
|
|
@ -97,4 +97,66 @@ struct mem_buf_alloc_ioctl_arg {
|
|||
#define MEM_BUF_IOC_ALLOC _IOWR(MEM_BUF_IOC_MAGIC, 0,\
|
||||
struct mem_buf_alloc_ioctl_arg)
|
||||
|
||||
/**
|
||||
* struct mem_buf_export_ioctl_arg: An request to allocate memory from another
|
||||
* VM to other VMs.
|
||||
* @dma_buf_fd: The fd of the dma-buf that will be exported to another VM.
|
||||
* @nr_acl_entries: The number of ACL entries in @acl_list.
|
||||
* @acl_list: An array of structures, where each structure specifies a VMID
|
||||
* and the access permissions that the VMID will have to the memory to be
|
||||
* exported.
|
||||
* @export_fd: An fd that corresponds to the buffer that was exported. This fd
|
||||
* must be kept open until it is no longer required to export the memory to
|
||||
* another VM.
|
||||
* @memparcel_hdl: The handle associated with the memparcel that was created by
|
||||
* granting access to the dma-buf for the VMIDs specified in @acl_list.
|
||||
*
|
||||
* Note: The buffer must not be mmap'ed by any process prior to invoking this
|
||||
* IOCTL. The buffer must also be a cached buffer from a non-secure ION heap.
|
||||
*
|
||||
* All reserved fields must be zeroed out by the caller prior to invoking the
|
||||
* export IOCTL command with this argument.
|
||||
*/
|
||||
struct mem_buf_export_ioctl_arg {
|
||||
__u32 dma_buf_fd;
|
||||
__u32 nr_acl_entries;
|
||||
__u64 acl_list;
|
||||
__u32 export_fd;
|
||||
__u32 memparcel_hdl;
|
||||
__u64 reserved0;
|
||||
__u64 reserved1;
|
||||
__u64 reserved2;
|
||||
};
|
||||
|
||||
#define MEM_BUF_IOC_EXPORT _IOWR(MEM_BUF_IOC_MAGIC, 1,\
|
||||
struct mem_buf_export_ioctl_arg)
|
||||
|
||||
/**
|
||||
* struct mem_buf_import_ioctl_arg: A request to import memory from another
|
||||
* VM as a dma-buf
|
||||
* @memparcel_hdl: The handle that corresponds to the memparcel we are
|
||||
* importing.
|
||||
* @nr_acl_entries: The number of ACL entries in @acl_list.
|
||||
* @acl_list: An array of structures, where each structure specifies a VMID
|
||||
* and the access permissions that the VMID should have for the memparcel.
|
||||
* @dma_buf_import_fd: A dma-buf file descriptor that the client can use to
|
||||
* access the buffer. This fd must be closed to release the memory.
|
||||
*
|
||||
* All reserved fields must be zeroed out by the caller prior to invoking the
|
||||
* import IOCTL command with this argument.
|
||||
*/
|
||||
struct mem_buf_import_ioctl_arg {
|
||||
__u32 memparcel_hdl;
|
||||
__u32 nr_acl_entries;
|
||||
__u64 acl_list;
|
||||
__u32 dma_buf_import_fd;
|
||||
__u32 reserved0;
|
||||
__u64 reserved1;
|
||||
__u64 reserved2;
|
||||
__u64 reserved3;
|
||||
};
|
||||
|
||||
#define MEM_BUF_IOC_IMPORT _IOWR(MEM_BUF_IOC_MAGIC, 2,\
|
||||
struct mem_buf_import_ioctl_arg)
|
||||
|
||||
#endif /* _UAPI_LINUX_MEM_BUF_H */
|
||||
|
|
|
|||
Loading…
Reference in a new issue