msm: camera: memmgr: Add support for non pix secure buffers
Add support to allocate such buffers which need to accessed by non-pix VM. CRs-Fixed: 2981372 Change-Id: Iac965a479e05d638c6323bfacd7c6a4d89f2a223 Signed-off-by: Rishabh Jain <risjai@codeaurora.org>
This commit is contained in:
@@ -584,6 +584,11 @@ static int cam_mem_util_get_dma_buf(size_t len,
|
||||
perms[num_vmids] = PERM_READ | PERM_WRITE;
|
||||
num_vmids++;
|
||||
}
|
||||
} else if (cam_flags & CAM_MEM_FLAG_EVA_NOPIXEL) {
|
||||
heap = tbl.secure_display_heap;
|
||||
vmids[num_vmids] = VMID_CP_NON_PIXEL;
|
||||
perms[num_vmids] = PERM_READ | PERM_WRITE;
|
||||
num_vmids++;
|
||||
} else if (use_cached_heap) {
|
||||
try_heap = tbl.camera_heap;
|
||||
heap = tbl.system_heap;
|
||||
@@ -624,7 +629,8 @@ static int cam_mem_util_get_dma_buf(size_t len,
|
||||
}
|
||||
}
|
||||
|
||||
if (cam_flags & CAM_MEM_FLAG_PROTECTED_MODE) {
|
||||
if ((cam_flags & CAM_MEM_FLAG_PROTECTED_MODE) ||
|
||||
(cam_flags & CAM_MEM_FLAG_EVA_NOPIXEL)) {
|
||||
if (num_vmids >= CAM_MAX_VMIDS) {
|
||||
CAM_ERR(CAM_MEM, "Insufficient array size for vmids %d", num_vmids);
|
||||
rc = -EINVAL;
|
||||
@@ -771,6 +777,13 @@ static int cam_mem_util_check_alloc_flags(struct cam_mem_mgr_alloc_cmd *cmd)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ((cmd->flags & CAM_MEM_FLAG_EVA_NOPIXEL) &&
|
||||
(cmd->flags & CAM_MEM_FLAG_PROTECTED_MODE ||
|
||||
cmd->flags & CAM_MEM_FLAG_KMD_ACCESS)){
|
||||
CAM_ERR(CAM_MEM,
|
||||
"Kernel mapping and secure mode not allowed in no pixel mode");
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -290,6 +290,7 @@ struct cam_req_mgr_link_control {
|
||||
#define CAM_MEM_FLAG_CDSP_OUTPUT (1<<12)
|
||||
#define CAM_MEM_FLAG_DISABLE_DELAYED_UNMAP (1<<13)
|
||||
#define CAM_MEM_FLAG_KMD_DEBUG_FLAG (1<<14)
|
||||
#define CAM_MEM_FLAG_EVA_NOPIXEL (1<<15)
|
||||
|
||||
|
||||
#define CAM_MEM_MMU_MAX_HANDLE 16
|
||||
|
Reference in New Issue
Block a user