Revert "video: tegra: host: add sof/eof taskstatus support"

This reverts commit 6f683c8a174b0a937ea6324e017c46df81398f25.

Change-Id: Ic7527e007b608c43245250343101ceee2aeaf742
Signed-off-by: Sachin Jadhav <sachinj@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2133504
This commit is contained in:
Sachin Jadhav
2019-06-10 02:54:15 -07:00
committed by Laxman Dewangan
parent 84786d578b
commit ef831a5207
4 changed files with 37 additions and 100 deletions

View File

@@ -265,14 +265,12 @@ struct nvdla_task {
struct nvdev_fence prefences[MAX_NUM_NVDLA_PREFENCES]; struct nvdev_fence prefences[MAX_NUM_NVDLA_PREFENCES];
struct nvdev_fence postfences[MAX_NUM_NVDLA_POSTFENCES]; struct nvdev_fence postfences[MAX_NUM_NVDLA_POSTFENCES];
struct nvdla_status_notify in_task_status[MAX_NUM_NVDLA_IN_TASK_STATUS]; struct nvdla_status_notify in_task_status[MAX_NUM_NVDLA_IN_TASK_STATUS];
struct nvdla_status_notify sof_task_status[MAX_NUM_NVDLA_OUT_TASK_STATUS]; struct nvdla_status_notify out_task_status[MAX_NUM_NVDLA_OUT_TASK_STATUS];
struct nvdla_status_notify eof_task_status[MAX_NUM_NVDLA_OUT_TASK_STATUS];
struct nvdla_mem_handle memory_handles[NVDLA_MAX_BUFFERS_PER_TASK]; struct nvdla_mem_handle memory_handles[NVDLA_MAX_BUFFERS_PER_TASK];
u8 num_prefences; u8 num_prefences;
u8 num_postfences; u8 num_postfences;
u8 num_in_task_status; u8 num_in_task_status;
u8 num_sof_task_status; u8 num_out_task_status;
u8 num_eof_task_status;
u32 num_addresses; u32 num_addresses;
u32 fence; u32 fence;
u32 fence_counter; u32 fence_counter;
@@ -288,8 +286,7 @@ struct nvdla_task {
struct dma_buf *prefences_sem_dmabuf[MAX_NUM_NVDLA_PREFENCES]; struct dma_buf *prefences_sem_dmabuf[MAX_NUM_NVDLA_PREFENCES];
struct dma_buf *in_task_status_dmabuf[MAX_NUM_NVDLA_IN_TASK_STATUS]; struct dma_buf *in_task_status_dmabuf[MAX_NUM_NVDLA_IN_TASK_STATUS];
struct dma_buf *postfences_sem_dmabuf[MAX_NUM_NVDLA_POSTFENCES]; struct dma_buf *postfences_sem_dmabuf[MAX_NUM_NVDLA_POSTFENCES];
struct dma_buf *sof_task_status_dmabuf[MAX_NUM_NVDLA_OUT_TASK_STATUS]; struct dma_buf *out_task_status_dmabuf[MAX_NUM_NVDLA_OUT_TASK_STATUS];
struct dma_buf *eof_task_status_dmabuf[MAX_NUM_NVDLA_OUT_TASK_STATUS];
}; };
struct dla_mem_addr { struct dla_mem_addr {

View File

@@ -376,23 +376,13 @@ static int nvdla_get_actions(struct nvdla_ioctl_submit_task *user_task,
goto fail; goto fail;
} }
/* get sof task status */ /* get output task status */
if (copy_from_user(task->sof_task_status, if (copy_from_user(task->out_task_status,
(void __user *)user_task->sof_task_status, (void __user *)user_task->output_task_status,
(task->num_sof_task_status * (task->num_out_task_status *
sizeof(struct nvdla_status_notify)))) { sizeof(struct nvdla_status_notify)))) {
err = -EFAULT; err = -EFAULT;
nvdla_dbg_err(pdev, "failed to copy sof task status"); nvdla_dbg_err(pdev, "failed to copy output task status");
goto fail;
}
/* get eof task status */
if (copy_from_user(task->eof_task_status,
(void __user *)user_task->eof_task_status,
(task->num_eof_task_status *
sizeof(struct nvdla_status_notify)))) {
err = -EFAULT;
nvdla_dbg_err(pdev, "failed to copy eof task status");
goto fail; goto fail;
} }
@@ -628,15 +618,9 @@ static int nvdla_val_task_submit_input(struct nvdla_ioctl_submit_task *in_task)
MAX_NUM_NVDLA_IN_TASK_STATUS); MAX_NUM_NVDLA_IN_TASK_STATUS);
return -EINVAL; return -EINVAL;
} }
if (in_task->num_sof_task_status > MAX_NUM_NVDLA_OUT_TASK_STATUS) { if (in_task->num_output_task_status > MAX_NUM_NVDLA_OUT_TASK_STATUS) {
pr_err("sof task status[%u] crossing expected[%d]\n", pr_err("out task status[%u] crossing expected[%d]\n",
in_task->num_sof_task_status, in_task->num_output_task_status,
MAX_NUM_NVDLA_OUT_TASK_STATUS);
return -EINVAL;
}
if (in_task->num_eof_task_status > MAX_NUM_NVDLA_OUT_TASK_STATUS) {
pr_err("eof task status[%u] crossing expected[%d]\n",
in_task->num_eof_task_status,
MAX_NUM_NVDLA_OUT_TASK_STATUS); MAX_NUM_NVDLA_OUT_TASK_STATUS);
return -EINVAL; return -EINVAL;
} }
@@ -681,8 +665,7 @@ static int nvdla_fill_task(struct nvdla_queue *queue,
task->num_prefences = local_task->num_prefences; task->num_prefences = local_task->num_prefences;
task->num_postfences = local_task->num_postfences; task->num_postfences = local_task->num_postfences;
task->num_in_task_status = local_task->num_input_task_status; task->num_in_task_status = local_task->num_input_task_status;
task->num_sof_task_status = local_task->num_sof_task_status; task->num_out_task_status = local_task->num_output_task_status;
task->num_eof_task_status = local_task->num_eof_task_status;
task->num_addresses = local_task->num_addresses; task->num_addresses = local_task->num_addresses;
task->timeout = local_task->timeout; task->timeout = local_task->timeout;
@@ -726,11 +709,8 @@ static void nvdla_dump_task(struct nvdla_task *task)
nvdla_dbg_info(pdev, "dumping input task [%p] parameters:", task); nvdla_dbg_info(pdev, "dumping input task [%p] parameters:", task);
nvdla_dbg_info(pdev, "num_prefences[%u] num_postfences[%u]", nvdla_dbg_info(pdev, "num_prefences[%u] num_postfences[%u]",
task->num_prefences, task->num_postfences); task->num_prefences, task->num_postfences);
nvdla_dbg_info(pdev, "num_in_status[%u] num_sof_task_status[%u] " nvdla_dbg_info(pdev, "num_in_status[%u] num_out_task_status[%u]",
"num_eof_task_status[%u]", task->num_in_task_status, task->num_out_task_status);
task->num_in_task_status,
task->num_sof_task_status,
task->num_eof_task_status);
nvdla_dbg_info(pdev, "num_addresses[%u]", task->num_addresses); nvdla_dbg_info(pdev, "num_addresses[%u]", task->num_addresses);
for (i = 0; i < task->num_prefences; i++) { for (i = 0; i < task->num_prefences; i++) {
@@ -767,20 +747,12 @@ static void nvdla_dump_task(struct nvdla_task *task)
task->in_task_status[i].status); task->in_task_status[i].status);
} }
for (i = 0; i < task->num_sof_task_status; i++) { for (i = 0; i < task->num_out_task_status; i++) {
nvdla_dbg_info(pdev, "SOF task status[%d]:" nvdla_dbg_info(pdev, "Output task status[%d]:"
"handle[%u] offset[%u] status[%u]", "handle[%u] offset[%u] status[%u]",
i, task->sof_task_status[i].handle, i, task->out_task_status[i].handle,
task->sof_task_status[i].offset, task->out_task_status[i].offset,
task->sof_task_status[i].status); task->out_task_status[i].status);
}
for (i = 0; i < task->num_eof_task_status; i++) {
nvdla_dbg_info(pdev, "EOF task status[%d]:"
"handle[%u] offset[%u] status[%u]",
i, task->eof_task_status[i].handle,
task->eof_task_status[i].offset,
task->eof_task_status[i].status);
} }
for (i = 0; i < task->num_addresses; i++) { for (i = 0; i < task->num_addresses; i++) {

View File

@@ -210,20 +210,12 @@ static int nvdla_unmap_task_memory(struct nvdla_task *task)
} }
nvdla_dbg_fn(pdev, "all postfences unmaped"); nvdla_dbg_fn(pdev, "all postfences unmaped");
/* unpin output task status memory */ /* unpin input task status memory */
for (ii = 0; ii < task->num_sof_task_status; ii++) { for (ii = 0; ii < task->num_out_task_status; ii++) {
if (task->sof_task_status[ii].handle) { if (task->out_task_status[ii].handle) {
nvdla_buffer_submit_unpin(task->buffers, nvdla_buffer_submit_unpin(task->buffers,
&task->sof_task_status_dmabuf[ii], 1); &task->out_task_status_dmabuf[ii], 1);
dma_buf_put(task->sof_task_status_dmabuf[ii]); dma_buf_put(task->out_task_status_dmabuf[ii]);
}
}
for (ii = 0; ii < task->num_eof_task_status; ii++) {
if (task->eof_task_status[ii].handle) {
nvdla_buffer_submit_unpin(task->buffers,
&task->eof_task_status_dmabuf[ii], 1);
dma_buf_put(task->eof_task_status_dmabuf[ii]);
} }
} }
nvdla_dbg_fn(pdev, "all out task status unmaped"); nvdla_dbg_fn(pdev, "all out task status unmaped");
@@ -260,12 +252,11 @@ static void nvdla_task_syncpt_reset(struct nvhost_syncpt *syncpt,
static inline int nvdla_get_max_preaction_size(void) static inline int nvdla_get_max_preaction_size(void)
{ {
return (((MAX_NUM_NVDLA_PREFENCES + MAX_NUM_NVDLA_IN_TASK_STATUS + return (((MAX_NUM_NVDLA_PREFENCES + MAX_NUM_NVDLA_IN_TASK_STATUS) *
MAX_NUM_NVDLA_OUT_TASK_STATUS) *
sizeof(struct dla_action_opcode)) + sizeof(struct dla_action_opcode)) +
(MAX_NUM_NVDLA_PREFENCES * (MAX_NUM_NVDLA_PREFENCES *
sizeof(struct dla_action_semaphore)) + sizeof(struct dla_action_semaphore)) +
((MAX_NUM_NVDLA_IN_TASK_STATUS + MAX_NUM_NVDLA_OUT_TASK_STATUS) * (MAX_NUM_NVDLA_IN_TASK_STATUS *
sizeof(struct dla_action_task_status)) + sizeof(struct dla_action_task_status)) +
sizeof(struct dla_action_opcode)); sizeof(struct dla_action_opcode));
} }
@@ -942,15 +933,13 @@ static int nvdla_fill_postactions(struct nvdla_task *task)
task->task_desc_pa + nvdla_profile_status_offset(task), 0); task->task_desc_pa + nvdla_profile_status_offset(task), 0);
/* fill output task status */ /* fill output task status */
for (i = 0; i < task->num_eof_task_status; i++) { for (i = 0; i < task->num_out_task_status; i++) {
err = nvdla_fill_taskstatus_write_action(task, err = nvdla_fill_taskstatus_write_action(task,
&task->eof_task_status[i], &task->out_task_status[i],
&task->eof_task_status_dmabuf[i], &task->out_task_status_dmabuf[i],
&next); &next);
if (err < 0) { if (err < 0) {
nvdla_dbg_err(pdev, nvdla_dbg_info(pdev, "failed to fill out task status[%u]", i);
"failed to fill eof taskstatus[%d]",
i);
goto fail; goto fail;
} }
} }
@@ -1015,30 +1004,14 @@ static int nvdla_fill_preactions(struct nvdla_task *task)
} }
} }
/* fill input status after filling sem/syncpt/gos */ /* fill input status after filling sem/synpt/gos */
for (i = 0; i < task->num_in_task_status; i++) { for (i = 0; i < task->num_in_task_status; i++) {
err = nvdla_fill_taskstatus_read_action(task, err = nvdla_fill_taskstatus_read_action(task,
&task->in_task_status[i], &task->in_task_status[i],
&task->in_task_status_dmabuf[i], &task->in_task_status_dmabuf[i],
&next); &next);
if (err < 0) { if (err < 0) {
nvdla_dbg_err(pdev, nvdla_dbg_info(pdev, "failed to fill in task status[%u]", i);
"failed to fill in taskstatus[%d]",
i);
goto fail;
}
}
/* fill sof task status actions */
for (i = 0; i < task->num_sof_task_status; i++) {
err = nvdla_fill_taskstatus_write_action(task,
&task->sof_task_status[i],
&task->sof_task_status_dmabuf[i],
&next);
if (err < 0) {
nvdla_dbg_err(pdev,
"failed to fill sof taskstatus[%d]",
i);
goto fail; goto fail;
} }
} }

View File

@@ -125,15 +125,13 @@ struct nvdla_mem_handle {
* @num_prefences number of pre-fences in task * @num_prefences number of pre-fences in task
* @num_postfences number of post-fences in task * @num_postfences number of post-fences in task
* @num_input_task_status number of input task status * @num_input_task_status number of input task status
* @num_sof_task_status number of sof task status * @num_output_task_status number of output task status
* @num_eof_task_status number of eof task status
* @flags flags for bitwise task info embeddeing * @flags flags for bitwise task info embeddeing
* @reserved reserved for future use * @reserved reserved for future use
* @prefences pointer to pre-fence struct table * @prefences pointer to pre-fence struct table
* @postfences pointer to post-fence struct table * @postfences pointer to post-fence struct table
* @input_task_status pointer to input task status struct table * @input_task_status pointer to input task status struct table
* @sof_task_status pointer to sof task status struct table * @output_task_status pointer to output task status struct table
* @eof_task_status pointer to eof task status struct table
* @num_addresses total number of addressed passed in structure * @num_addresses total number of addressed passed in structure
* @address_list pointer to address list * @address_list pointer to address list
* @timeout task timeout * @timeout task timeout
@@ -143,20 +141,17 @@ struct nvdla_ioctl_submit_task {
__u8 num_prefences; __u8 num_prefences;
__u8 num_postfences; __u8 num_postfences;
__u8 num_input_task_status; __u8 num_input_task_status;
__u8 num_sof_task_status; __u8 num_output_task_status;
__u8 num_eof_task_status;
__u8 reserved0[3];
#define NVDLA_MAX_BUFFERS_PER_TASK (6144) #define NVDLA_MAX_BUFFERS_PER_TASK (6144)
__u32 num_addresses; __u32 num_addresses;
__u16 flags; __u16 flags;
__u16 reserved1; __u16 reserved;
__u64 prefences; __u64 prefences;
__u64 postfences; __u64 postfences;
__u64 input_task_status; __u64 input_task_status;
__u64 sof_task_status; __u64 output_task_status;
__u64 eof_task_status;
__u64 address_list; __u64 address_list;
__u64 timeout; __u64 timeout;
}; };