summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2015-11-04 03:36:37 -0500
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-11-23 11:33:01 -0500
commit2d40ebb1caa313d5d12a13f15b2623faa3ad914b (patch)
treeac9463d1255e896ec06fb7b03870a5323ff9ceb7 /drivers/gpu/nvgpu/gk20a/channel_gk20a.h
parentf50d0ffb15aef2cbf419b81cdbc3031097767bff (diff)
gpu: nvgpu: rework private command buffer free path
We currently allocate private command buffers (wait_cmd and incr_cmd) before submitting the job but we never free them explicitly. When private command queue of the channel is full, we then try to recycle/remove free command buffers. But this recycling happens during submit path, and hence that particular submit path takes much longer Rework this as below : - add reference of command buffers to job structure - when job completes, free the command buffers explicitly - remove the code to recycle buffers since it should not be needed now Note that command buffers need to be freed in order of their allocation. Ensure this with error print before freeing the command buffer entry Bug 200141116 Bug 1698667 Change-Id: Id4b69429d7ad966307e0d122a71ad55076684307 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/827638 (cherry picked from commit c6cefd69b71c9b70d6df5343b13dfcfb3fa99598) Reviewed-on: http://git-master/r/835802 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index d5f5e6a2..245db56a 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -62,6 +62,8 @@ struct channel_gk20a_job {
62 int num_mapped_buffers; 62 int num_mapped_buffers;
63 struct gk20a_fence *pre_fence; 63 struct gk20a_fence *pre_fence;
64 struct gk20a_fence *post_fence; 64 struct gk20a_fence *post_fence;
65 struct priv_cmd_entry *wait_cmd;
66 struct priv_cmd_entry *incr_cmd;
65 struct list_head list; 67 struct list_head list;
66}; 68};
67 69