diff options
author | Leonid Moiseichuk <lmoiseichuk@nvidia.com> | 2015-05-08 08:06:42 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2015-06-06 10:23:24 -0400 |
commit | 837ceffcab417865db8adbdf1a2038ebde8ec1a5 (patch) | |
tree | 8890ac07cd6cca9d5cff054dd899a8f6052b0669 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | ef8fa4999fcd8c01275ef3790b0abd5e69c55ea5 (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.c | 7 |
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 | ||