Jelajahi Sumber

msm: eva: Deprecate secure heap reference

Use mem_buf_lend to assign system memory to secure VM.

Change-Id: I6a09e65ddb72dbd6eadd6a88ae56df5430825c9e
Signed-off-by: George Shen <[email protected]>
George Shen 3 tahun lalu
induk
melakukan
dd913bddc0
1 mengubah file dengan 24 tambahan dan 7 penghapusan
  1. 24 7
      msm/eva/msm_smem.c

+ 24 - 7
msm/eva/msm_smem.c

@@ -262,6 +262,9 @@ static int alloc_dma_mem(size_t size, u32 align, int map_kernel,
 	int rc = 0;
 	struct dma_buf *dbuf = NULL;
 	struct dma_heap *heap = NULL;
+	struct mem_buf_lend_kernel_arg arg;
+	int vmids[1];
+	int perms[1];
 
 	if (!res) {
 		dprintk(CVP_ERR, "%s: NULL res\n", __func__);
@@ -281,20 +284,34 @@ static int alloc_dma_mem(size_t size, u32 align, int map_kernel,
 		size, align);
 	}
 
-	if (mem->flags & SMEM_NON_PIXEL)
-		heap = dma_heap_find("qcom,secure-non-pixel");
-	else if (mem->flags & SMEM_PIXEL)
-		heap = dma_heap_find("qcom,secure-pixel");
-
 	dbuf = dma_heap_buffer_alloc(heap, size, 0, 0);
 	if (IS_ERR_OR_NULL(dbuf)) {
 		dprintk(CVP_ERR,
-		"Failed to allocate shared memory = %x bytes, %x %x\n",
-		size, mem->flags, PTR_ERR(dbuf));
+			"Failed to allocate shared memory = %x bytes, %x %x\n",
+			size, mem->flags, PTR_ERR(dbuf));
 		rc = -ENOMEM;
 		goto fail_shared_mem_alloc;
 	}
 
+	perms[0] = PERM_READ | PERM_WRITE;
+	arg.nr_acl_entries = 1;
+	arg.vmids = vmids;
+	arg.perms = perms;
+
+	if (mem->flags & SMEM_NON_PIXEL) {
+		vmids[0] = VMID_CP_NON_PIXEL;
+		rc = mem_buf_lend(dbuf, &arg);
+	} else if (mem->flags & SMEM_PIXEL) {
+		vmids[0] = VMID_CP_PIXEL;
+		rc = mem_buf_lend(dbuf, &arg);
+	}
+
+	if (rc) {
+		dprintk(CVP_ERR, "Failed to lend dmabuf %d, vmid %d\n",
+			rc, vmids[0]);
+		goto fail_device_address;
+	}
+
 	if (!gfa_cv.dmabuf_f_op)
 		gfa_cv.dmabuf_f_op = (const struct file_operations *)dbuf->file->f_op;