From 616b709f02dd0cda47ae0ba02b1b3eb0ffb1e389 Mon Sep 17 00:00:00 2001 From: Shridhar Rasal Date: Tue, 24 Jan 2017 15:42:49 +0530 Subject: video: tegra: host: dla: remove updating user bufffer with IOVA This patch addresses two fixes: [1] Removes updating user buffers with IOVA. - In address translation of address list of a tasks, handle and offset were replaced with actual IOVA into user buffer and same buffer was shared with engine. This approach is error prone. - To fix this issue, kernel keeps IOVA list and shares with engine. - In task submit, mem_handle list from user and updated in kernel copy of task. - and while pinning user buffers, engine shared list updated with actual dma address retrieved from submit pin call. [2] Remove dynamic allocation required in address translation - Required memory of 'kernel copy address list' and 'engine shared address list' both allocated from queue memory pool. - and assigned and released along with task data. DLA-286 Change-Id: I4d5a322adaff25e6e587d3305847540757850c77 Signed-off-by: Shridhar Rasal Reviewed-on: http://git-master/r/1293124 Reviewed-by: Prashant Gaikwad GVS: Gerrit_Virtual_Submit --- include/linux/nvhost_nvdla_ioctl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'include/linux') diff --git a/include/linux/nvhost_nvdla_ioctl.h b/include/linux/nvhost_nvdla_ioctl.h index 02926b1fd..56044c85f 100644 --- a/include/linux/nvhost_nvdla_ioctl.h +++ b/include/linux/nvhost_nvdla_ioctl.h @@ -119,6 +119,8 @@ struct nvdla_ioctl_submit_task { __u8 num_postfences; __u8 num_input_task_status; __u8 num_output_task_status; +#define NVDLA_MAX_BUFFERS_PER_TASK (256) + __u32 num_addresses; __u16 flags; __u16 reserved; @@ -127,9 +129,7 @@ struct nvdla_ioctl_submit_task { __u64 input_task_status; __u64 output_task_status; - - __u32 num_addresses; - struct nvdla_mem_handle address_list; + __u64 address_list; }; /** -- cgit v1.2.2