summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-11-23 04:03:24 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-28 12:46:50 -0500
commit861b11a968b1f51f45832486e62bfe23fc29fc19 (patch)
tree3ec0870177b4ce66f151b916661df483d6b2847b /drivers/gpu/nvgpu/gk20a/channel_gk20a.c
parent3fbb44d7576238d42635e2ca6501a17cdc7306f7 (diff)
gpu: nvgpu: move snapshot_client memory handling to linux
We right now store dmabuf fd and dma_buf pointer for gk20a_cs_snapshot_client But since dma_buf and all related APIs are linux specific, we need to remove them from common code and move them to linux specific code Add new linux specific structure gk20a_cs_snapshot_client_linux which includes struct gk20a_cs_snapshot_client and linux specific dma_buf pointer In gk20a_attach_cycle_stats_snapshot(), we first handle all dma_buf related operations and then call gr_gk20a_css_attach() Move gk20a_channel_free_cycle_stats_snapshot() to ioctl_channel.c In gk20a_channel_free_cycle_stats_snapshot(), we call gr_gk20a_css_detach() and then free up dma_buf in linux specific code We also need to call gk20a_channel_free_cycle_stats_snapshot() while closing the channel, so call it from linux specific nvgpu_channel_close_linux() Jira NVGPU-397 Jira NVGPU-415 Change-Id: Ida27240541f6adf31f28d7d7ee4f51651c6d3de2 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1603908 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c17
1 files changed, 0 insertions, 17 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index a0415861..dac38739 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -376,22 +376,6 @@ void gk20a_channel_free_cycle_stats_buffer(struct channel_gk20a *ch)
376 nvgpu_mutex_release(&ch->cyclestate.cyclestate_buffer_mutex); 376 nvgpu_mutex_release(&ch->cyclestate.cyclestate_buffer_mutex);
377} 377}
378 378
379int gk20a_channel_free_cycle_stats_snapshot(struct channel_gk20a *ch)
380{
381 int ret;
382
383 nvgpu_mutex_acquire(&ch->cs_client_mutex);
384 if (ch->cs_client) {
385 ret = gr_gk20a_css_detach(ch, ch->cs_client);
386 ch->cs_client = NULL;
387 } else {
388 ret = 0;
389 }
390 nvgpu_mutex_release(&ch->cs_client_mutex);
391
392 return ret;
393}
394
395#endif 379#endif
396 380
397/* call ONLY when no references to the channel exist: after the last put */ 381/* call ONLY when no references to the channel exist: after the last put */
@@ -508,7 +492,6 @@ static void gk20a_free_channel(struct channel_gk20a *ch, bool force)
508 492
509#if defined(CONFIG_GK20A_CYCLE_STATS) 493#if defined(CONFIG_GK20A_CYCLE_STATS)
510 gk20a_channel_free_cycle_stats_buffer(ch); 494 gk20a_channel_free_cycle_stats_buffer(ch);
511 gk20a_channel_free_cycle_stats_snapshot(ch);
512#endif 495#endif
513 496
514 channel_gk20a_free_priv_cmdbuf(ch); 497 channel_gk20a_free_priv_cmdbuf(ch);