diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h | 3 |
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index f90bc1a3..1cc0f154 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |||
@@ -351,6 +351,16 @@ static void channel_gk20a_unbind(struct channel_gk20a *ch_gk20a) | |||
351 | ccsr_channel_inst_bind_false_f()); | 351 | ccsr_channel_inst_bind_false_f()); |
352 | 352 | ||
353 | ch_gk20a->bound = false; | 353 | ch_gk20a->bound = false; |
354 | |||
355 | /* | ||
356 | * if we are agrressive then we can destroy the syncpt | ||
357 | * resource at this point | ||
358 | * if not, then it will be destroyed at channel_free() | ||
359 | */ | ||
360 | if (ch_gk20a->sync && ch_gk20a->sync->syncpt_aggressive_destroy) { | ||
361 | ch_gk20a->sync->destroy(ch_gk20a->sync); | ||
362 | ch_gk20a->sync = NULL; | ||
363 | } | ||
354 | } | 364 | } |
355 | 365 | ||
356 | static int channel_gk20a_alloc_inst(struct gk20a *g, | 366 | static int channel_gk20a_alloc_inst(struct gk20a *g, |
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h index 69feb89f..80f38b26 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h | |||
@@ -94,6 +94,9 @@ struct gk20a_channel_sync { | |||
94 | /* Reset the channel syncpoint/semaphore. */ | 94 | /* Reset the channel syncpoint/semaphore. */ |
95 | void (*set_min_eq_max)(struct gk20a_channel_sync *s); | 95 | void (*set_min_eq_max)(struct gk20a_channel_sync *s); |
96 | 96 | ||
97 | /* flag to set syncpt destroy aggressiveness */ | ||
98 | bool syncpt_aggressive_destroy; | ||
99 | |||
97 | /* Free the resources allocated by gk20a_channel_sync_create. */ | 100 | /* Free the resources allocated by gk20a_channel_sync_create. */ |
98 | void (*destroy)(struct gk20a_channel_sync *s); | 101 | void (*destroy)(struct gk20a_channel_sync *s); |
99 | }; | 102 | }; |