summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2014-11-28 05:51:35 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:12:25 -0400
commit36834282354de2760e54b1381e03e0fe8bc8b2a4 (patch)
treecce5b221077f047fc2f9fd83b379b7f20e604c1e /drivers/gpu/nvgpu/gk20a/channel_gk20a.c
parent0d11ff0c9cd39b2ee6433b296c5ba029355e1c44 (diff)
gpu: nvgpu: Enable syncpt reclaim only on gm20b
gm20b has more channels than sync points. We use aggressive reclaim of sync points to offset that. Disable aggressive reclaim for gk20a because it is not needed there. Bug 1583849 Change-Id: I2a74b0504150a54cb8a97016effe20c5d905ac95 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/657095 Reviewed-by: Deepak Nibade <dnibade@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index de51e83e..03163575 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -318,6 +318,7 @@ static void channel_gk20a_bind(struct channel_gk20a *ch_gk20a)
318void channel_gk20a_unbind(struct channel_gk20a *ch_gk20a) 318void channel_gk20a_unbind(struct channel_gk20a *ch_gk20a)
319{ 319{
320 struct gk20a *g = ch_gk20a->g; 320 struct gk20a *g = ch_gk20a->g;
321 struct gk20a_platform *platform = gk20a_get_platform(g->dev);
321 322
322 gk20a_dbg_fn(""); 323 gk20a_dbg_fn("");
323 324
@@ -333,7 +334,7 @@ void channel_gk20a_unbind(struct channel_gk20a *ch_gk20a)
333 * resource at this point 334 * resource at this point
334 * if not, then it will be destroyed at channel_free() 335 * if not, then it will be destroyed at channel_free()
335 */ 336 */
336 if (ch_gk20a->sync && ch_gk20a->sync->aggressive_destroy) { 337 if (ch_gk20a->sync && platform->sync_aggressive_destroy) {
337 ch_gk20a->sync->destroy(ch_gk20a->sync); 338 ch_gk20a->sync->destroy(ch_gk20a->sync);
338 ch_gk20a->sync = NULL; 339 ch_gk20a->sync = NULL;
339 } 340 }
@@ -1469,6 +1470,7 @@ void gk20a_channel_update(struct channel_gk20a *c, int nr_completed)
1469{ 1470{
1470 struct vm_gk20a *vm = c->vm; 1471 struct vm_gk20a *vm = c->vm;
1471 struct channel_gk20a_job *job, *n; 1472 struct channel_gk20a_job *job, *n;
1473 struct gk20a_platform *platform = gk20a_get_platform(c->g->dev);
1472 1474
1473 trace_gk20a_channel_update(c); 1475 trace_gk20a_channel_update(c);
1474 1476
@@ -1506,7 +1508,7 @@ void gk20a_channel_update(struct channel_gk20a *c, int nr_completed)
1506 * the sync resource 1508 * the sync resource
1507 */ 1509 */
1508 if (list_empty(&c->jobs)) { 1510 if (list_empty(&c->jobs)) {
1509 if (c->sync && c->sync->aggressive_destroy && 1511 if (c->sync && platform->sync_aggressive_destroy &&
1510 gk20a_fence_is_expired(c->last_submit.post_fence)) { 1512 gk20a_fence_is_expired(c->last_submit.post_fence)) {
1511 c->sync->destroy(c->sync); 1513 c->sync->destroy(c->sync);
1512 c->sync = NULL; 1514 c->sync = NULL;