summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorEtienne Carriere <etienne.carriere@linaro.org>2016-10-27 23:18:35 +0200
committerJason Liu <jason.hui.liu@nxp.com>2018-10-29 11:10:38 +0800
commitddaa5e12c14b207cc4ef90ae087d37472ef20a54 (patch)
tree52cc01274cde78c15217fbfc44cad6d5cd35ecd5 /include/linux
parentfb0de28aef26f4760c99d81bb5c99e7de5552416 (diff)
tee: new ioctl to a register tee_shm from a dmabuf file descriptor
This change allows userland to create a tee_shm object that refers to a dmabuf reference. Userland provides a dmabuf file descriptor as buffer reference. The created tee_shm object exported as a brand new dmabuf reference used to provide a clean fd to userland. Userland shall closed this new fd to release the tee_shm object resources. The initial dmabuf resources are tracked independently through original dmabuf file descriptor. Once the buffer is registered and until it is released, TEE driver keeps a refcount on the registered dmabuf structure. This change only support dmabuf references that relates to physically contiguous memory buffers. New tee_shm flag to identify tee_shm objects built from a registered dmabuf: TEE_SHM_EXT_DMA_BUF. Such tee_shm structures are flagged both TEE_SHM_DMA_BUF and TEE_SHM_EXT_DMA_BUF. Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> From: https://github.com/linaro-swg/linux.git (cherry picked from commit 41e21e5c405530590dc2dd10b2a8dbe64589840f)
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/tee_drv.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/include/linux/tee_drv.h b/include/linux/tee_drv.h
index cb889afe576b..9cd6d57c8360 100644
--- a/include/linux/tee_drv.h
+++ b/include/linux/tee_drv.h
@@ -25,8 +25,9 @@
* specific TEE driver.
*/
-#define TEE_SHM_MAPPED 0x1 /* Memory mapped by the kernel */
-#define TEE_SHM_DMA_BUF 0x2 /* Memory with dma-buf handle */
+#define TEE_SHM_MAPPED BIT(0) /* Memory mapped by the kernel */
+#define TEE_SHM_DMA_BUF BIT(1) /* Memory with dma-buf handle */
+#define TEE_SHM_EXT_DMA_BUF BIT(2) /* Memory with dma-buf handle */
struct device;
struct tee_device;
@@ -211,6 +212,16 @@ void *tee_get_drvdata(struct tee_device *teedev);
struct tee_shm *tee_shm_alloc(struct tee_context *ctx, size_t size, u32 flags);
/**
+ * tee_shm_register_fd() - Register shared memory from file descriptor
+ *
+ * @ctx: Context that allocates the shared memory
+ * @fd: shared memory file descriptor reference.
+ *
+ * @returns a pointer to 'struct tee_shm'
+ */
+struct tee_shm *tee_shm_register_fd(struct tee_context *ctx, int fd);
+
+/**
* tee_shm_free() - Free shared memory
* @shm: Handle to shared memory to free
*/