diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2017-11-23 04:03:24 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-11-28 12:46:50 -0500 |
commit | 861b11a968b1f51f45832486e62bfe23fc29fc19 (patch) | |
tree | 3ec0870177b4ce66f151b916661df483d6b2847b /drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |
parent | 3fbb44d7576238d42635e2ca6501a17cdc7306f7 (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.c | 17 |
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 | ||
379 | int 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); |