summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authorLeonid Moiseichuk <lmoiseichuk@nvidia.com>2015-05-08 08:06:42 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-06-06 10:23:24 -0400
commit837ceffcab417865db8adbdf1a2038ebde8ec1a5 (patch)
tree8890ac07cd6cca9d5cff054dd899a8f6052b0669 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parentef8fa4999fcd8c01275ef3790b0abd5e69c55ea5 (diff)
gpu: nvgpu: cyclestats mode E snapshots support
That is a kernel supporting code for cyclestats mode E. Cyclestats mode E implemented following Windows-design in user-space and required the following operations to be implemented: - attach a client for shared hardware buffer of device - detach client from shared hardware buffer - flush means copy of available data from hardware buffer to private client buffers according to perfmon IDs assigned for clients - perfmon IDs management for user-space clients - a NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS_SNAPSHOT capability added Bug 1573150 Change-Id: I9e09f0fbb2be5a95c47e6d80a2e23fa839b46f9a Signed-off-by: Leonid Moiseichuk <lmoiseichuk@nvidia.com> Reviewed-on: http://git-master/r/740653 (cherry picked from commit 79fe89fd4cea39d8ab9dbef0558cd806ddfda87f) Reviewed-on: http://git-master/r/753274 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 7c007622..85d1a886 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -2847,6 +2847,8 @@ static void gk20a_remove_gr_support(struct gr_gk20a *gr)
2847 2847
2848 gk20a_dbg_fn(""); 2848 gk20a_dbg_fn("");
2849 2849
2850 gr_gk20a_free_cyclestats_snapshot_data(g);
2851
2850 gr_gk20a_free_global_ctx_buffers(g); 2852 gr_gk20a_free_global_ctx_buffers(g);
2851 2853
2852 gk20a_gmmu_free(g, &gr->mmu_wr_mem); 2854 gk20a_gmmu_free(g, &gr->mmu_wr_mem);
@@ -4523,6 +4525,11 @@ int gk20a_init_gr_support(struct gk20a *g)
4523 4525
4524 gk20a_dbg_fn(""); 4526 gk20a_dbg_fn("");
4525 4527
4528#if defined(CONFIG_GK20A_CYCLE_STATS)
4529 mutex_init(&g->gr.cs_lock);
4530 g->gr.cs_data = NULL;
4531#endif
4532
4526 /* this is required before gr_gk20a_init_ctx_state */ 4533 /* this is required before gr_gk20a_init_ctx_state */
4527 mutex_init(&g->gr.fecs_mutex); 4534 mutex_init(&g->gr.fecs_mutex);
4528 4535