video: rockchip: rga3: fix import failure does not return error code
Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com> Change-Id: Ie1295d10b48b5e9775f0b66eeb0fd21bb916dded
This commit is contained in:
@@ -56,8 +56,8 @@ void rga_mm_dump_info(struct rga_mm *session);
|
||||
int rga_mm_map_job_info(struct rga_job *job);
|
||||
void rga_mm_unmap_job_info(struct rga_job *job);
|
||||
|
||||
uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
struct rga_session *session);
|
||||
int rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
struct rga_session *session);
|
||||
int rga_mm_release_buffer(uint32_t handle);
|
||||
int rga_mm_session_release_buffer(struct rga_session *session);
|
||||
|
||||
|
||||
@@ -650,7 +650,7 @@ static long rga_ioctl_import_buffer(unsigned long arg, struct rga_session *sessi
|
||||
}
|
||||
|
||||
ret = rga_mm_import_buffer(&external_buffer[i], session);
|
||||
if (ret == 0) {
|
||||
if (ret <= 0) {
|
||||
pr_err("buffer[%d] mm import buffer failed! memory = 0x%lx, type = %s(0x%x)\n",
|
||||
i, (unsigned long)external_buffer[i].memory,
|
||||
rga_get_memory_type_str(external_buffer[i].type),
|
||||
|
||||
@@ -455,6 +455,7 @@ static int rga_mm_map_dma_buffer(struct rga_external_buffer *external_buffer,
|
||||
phys_addr = sg_phys(buffer->sgt->sgl);
|
||||
if (phys_addr == 0) {
|
||||
pr_err("%s get physical address error!", __func__);
|
||||
ret = -EFAULT;
|
||||
goto unmap_buffer;
|
||||
}
|
||||
|
||||
@@ -571,6 +572,7 @@ static int rga_mm_map_virt_addr(struct rga_external_buffer *external_buffer,
|
||||
phys_addr = sg_phys(sgt->sgl);
|
||||
if (phys_addr == 0) {
|
||||
pr_err("%s get physical address error!", __func__);
|
||||
ret = -EFAULT;
|
||||
goto free_sgt;
|
||||
}
|
||||
|
||||
@@ -621,8 +623,9 @@ static int rga_mm_map_virt_addr(struct rga_external_buffer *external_buffer,
|
||||
if (mm_flag & RGA_MEM_PHYSICAL_CONTIGUOUS)
|
||||
break;
|
||||
|
||||
pr_err("Current %s[%d] cannot support virtual address!\n",
|
||||
pr_err("Current %s[%d] cannot support physically discontinuous virtual address!\n",
|
||||
rga_get_mmu_type_str(scheduler->data->mmu), scheduler->data->mmu);
|
||||
ret = -EOPNOTSUPP;
|
||||
goto free_dma_buffer;
|
||||
}
|
||||
|
||||
@@ -2044,8 +2047,18 @@ void rga_mm_unmap_job_info(struct rga_job *job)
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
struct rga_session *session)
|
||||
/*
|
||||
* rga_mm_import_buffer - Importing external buffer into the RGA driver
|
||||
*
|
||||
* @external_buffer: [in] Parameters of external buffer
|
||||
* @session: [in] Session of the current process
|
||||
*
|
||||
* returns:
|
||||
* if return value > 0, the buffer import is successful and is the generated
|
||||
* buffer-handle, negative error code on failure.
|
||||
*/
|
||||
int rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
struct rga_session *session)
|
||||
{
|
||||
int ret = 0, new_id;
|
||||
struct rga_mm *mm;
|
||||
@@ -2054,7 +2067,7 @@ uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
mm = rga_drvdata->mm;
|
||||
if (mm == NULL) {
|
||||
pr_err("rga mm is null!\n");
|
||||
return 0;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
mutex_lock(&mm->lock);
|
||||
@@ -2080,7 +2093,7 @@ uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
pr_err("%s alloc internal_buffer error!\n", __func__);
|
||||
|
||||
mutex_unlock(&mm->lock);
|
||||
return 0;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ret = rga_mm_map_buffer(external_buffer, internal_buffer, NULL, true);
|
||||
@@ -2099,6 +2112,7 @@ uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
idr_preload_end();
|
||||
if (new_id < 0) {
|
||||
pr_err("internal_buffer alloc id failed!\n");
|
||||
ret = new_id;
|
||||
goto FREE_INTERNAL_BUFFER;
|
||||
}
|
||||
|
||||
@@ -2117,7 +2131,7 @@ FREE_INTERNAL_BUFFER:
|
||||
mutex_unlock(&mm->lock);
|
||||
kfree(internal_buffer);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int rga_mm_release_buffer(uint32_t handle)
|
||||
|
||||
Reference in New Issue
Block a user