From cd14b7e09f5718055abf7a4f36491e72bc4b1ad9 Mon Sep 17 00:00:00 2001 From: Shridhar Rasal Date: Mon, 24 Apr 2017 13:56:20 +0530 Subject: [PATCH] video: tegra: host: nvdla: add task timeout support - pass task timeout parameter from user to engine for book keeping of task runtime - as stack framesize crossing limit of 2048 bytes, reduce number of maximum task can be submitted in one go. Jira DLA-374 Bug 200302518 Change-Id: I99d3706d9d80ac0201529d68c0a959cdd22a1488 Signed-off-by: Shridhar Rasal Signed-off-by: Prashant Gaikwad Reviewed-on: http://git-master/r/1468355 Reviewed-by: Amit Sharma (SW-TEGRA) Reviewed-by: Inamdar Sharif Reviewed-by: svccoveritychecker GVS: Gerrit_Virtual_Submit --- drivers/video/tegra/host/nvdla/dla_os_interface.h | 1 + drivers/video/tegra/host/nvdla/nvdla_ioctl.c | 1 + drivers/video/tegra/host/nvdla/nvdla_queue.c | 1 + 3 files changed, 3 insertions(+) diff --git a/drivers/video/tegra/host/nvdla/dla_os_interface.h b/drivers/video/tegra/host/nvdla/dla_os_interface.h index 1dc1bc5e..b74c6d8b 100644 --- a/drivers/video/tegra/host/nvdla/dla_os_interface.h +++ b/drivers/video/tegra/host/nvdla/dla_os_interface.h @@ -174,6 +174,7 @@ struct dla_task_descriptor { uint64_t address_list; uint16_t num_addresses; uint16_t status; + uint64_t timeout; } __attribute__ ((packed, aligned(4))); struct dla_action_list { diff --git a/drivers/video/tegra/host/nvdla/nvdla_ioctl.c b/drivers/video/tegra/host/nvdla/nvdla_ioctl.c index 0c699664..6ba180f8 100644 --- a/drivers/video/tegra/host/nvdla/nvdla_ioctl.c +++ b/drivers/video/tegra/host/nvdla/nvdla_ioctl.c @@ -518,6 +518,7 @@ static int nvdla_fill_task(struct nvhost_queue *queue, task->num_in_task_status = local_task->num_input_task_status; task->num_out_task_status = local_task->num_output_task_status; task->num_addresses = local_task->num_addresses; + task->timeout = local_task->timeout; /* assign memory for local task action lists and buf handles */ mem = task; diff --git a/drivers/video/tegra/host/nvdla/nvdla_queue.c b/drivers/video/tegra/host/nvdla/nvdla_queue.c index 761f1d4b..f1680ed2 100644 --- a/drivers/video/tegra/host/nvdla/nvdla_queue.c +++ b/drivers/video/tegra/host/nvdla/nvdla_queue.c @@ -806,6 +806,7 @@ int nvdla_fill_task_desc(struct nvdla_task *task) task_desc->version = DLA_DESCRIPTOR_VERSION; task_desc->engine_id = DLA_ENGINE_ID; task_desc->size = nvdla_get_task_desc_size(); + task_desc->timeout = task->timeout; /* update current task sequeue, make sure wrap around condition */ queue->sequence = queue->sequence + 1;