summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
diff options
context:
space:
mode:
authorPeter Daifuku <pdaifuku@nvidia.com>2016-06-28 13:34:15 -0400
committerPeter Daifuku <pdaifuku@nvidia.com>2016-07-30 14:29:20 -0400
commit38a59acc776c8ad5b7b5506d13a60712af7d5318 (patch)
tree4eeb2d238327e7c84e3915e1c50ae938c2e02b65 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
parent92415fd36694c6c8dcfbcf1de2e7197d4f883451 (diff)
gpu: nvgpu: move dbg_session_ops to gops
Move dbg_session_ops to gops for better code consistency JIRA VFND-1905 Change-Id: I04a11d77dd8c26d9922e80e556822f80dd2bc36d Signed-off-by: Peter Daifuku <pdaifuku@nvidia.com> Reviewed-on: http://git-master/r/1192641 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Richard Zhao <rizhao@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
index de8db2ba..f1f2cc70 100644
--- a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
@@ -31,13 +31,6 @@
31#include "hw_gr_gk20a.h" 31#include "hw_gr_gk20a.h"
32#include "hw_perf_gk20a.h" 32#include "hw_perf_gk20a.h"
33 33
34static int dbg_set_powergate(struct dbg_session_gk20a *dbg_s, u32 powermode);
35
36struct dbg_gpu_session_ops dbg_gpu_session_ops_gk20a = {
37 .exec_reg_ops = exec_regops_gk20a,
38 .dbg_set_powergate = dbg_set_powergate,
39};
40
41/* 34/*
42 * API to get first channel from the list of all channels 35 * API to get first channel from the list of all channels
43 * bound to the debug session 36 * bound to the debug session
@@ -84,7 +77,6 @@ static int alloc_session(struct dbg_session_gk20a **_dbg_s)
84 return -ENOMEM; 77 return -ENOMEM;
85 78
86 dbg_s->id = generate_session_id(); 79 dbg_s->id = generate_session_id();
87 dbg_s->ops = &dbg_gpu_session_ops_gk20a;
88 *_dbg_s = dbg_s; 80 *_dbg_s = dbg_s;
89 return 0; 81 return 0;
90} 82}
@@ -478,7 +470,7 @@ int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp)
478 * calling powergate/timeout enable ioctl 470 * calling powergate/timeout enable ioctl
479 */ 471 */
480 mutex_lock(&g->dbg_sessions_lock); 472 mutex_lock(&g->dbg_sessions_lock);
481 dbg_s->ops->dbg_set_powergate(dbg_s, 473 g->ops.dbg_session_ops.dbg_set_powergate(dbg_s,
482 NVGPU_DBG_GPU_POWERGATE_MODE_ENABLE); 474 NVGPU_DBG_GPU_POWERGATE_MODE_ENABLE);
483 nvgpu_dbg_timeout_enable(dbg_s, NVGPU_DBG_GPU_IOCTL_TIMEOUT_ENABLE); 475 nvgpu_dbg_timeout_enable(dbg_s, NVGPU_DBG_GPU_IOCTL_TIMEOUT_ENABLE);
484 mutex_unlock(&g->dbg_sessions_lock); 476 mutex_unlock(&g->dbg_sessions_lock);
@@ -976,7 +968,7 @@ static int nvgpu_ioctl_channel_reg_ops(struct dbg_session_gk20a *dbg_s,
976 968
977 gk20a_dbg_fn("%d ops, total size %llu", args->num_ops, ops_size); 969 gk20a_dbg_fn("%d ops, total size %llu", args->num_ops, ops_size);
978 970
979 if (!dbg_s->ops) { 971 if (!dbg_s->id) {
980 gk20a_err(dev, "can't call reg_ops on an unbound debugger session"); 972 gk20a_err(dev, "can't call reg_ops on an unbound debugger session");
981 return -EINVAL; 973 return -EINVAL;
982 } 974 }
@@ -1018,16 +1010,18 @@ static int nvgpu_ioctl_channel_reg_ops(struct dbg_session_gk20a *dbg_s,
1018 /* In the virtual case, the server will handle 1010 /* In the virtual case, the server will handle
1019 * disabling/enabling powergating when processing reg ops 1011 * disabling/enabling powergating when processing reg ops
1020 */ 1012 */
1021 powergate_err = dbg_s->ops->dbg_set_powergate(dbg_s, 1013 powergate_err = g->ops.dbg_session_ops.dbg_set_powergate(dbg_s,
1022 NVGPU_DBG_GPU_POWERGATE_MODE_DISABLE); 1014 NVGPU_DBG_GPU_POWERGATE_MODE_DISABLE);
1023 is_pg_disabled = true; 1015 is_pg_disabled = true;
1024 } 1016 }
1025 1017
1026 if (!powergate_err) { 1018 if (!powergate_err) {
1027 err = dbg_s->ops->exec_reg_ops(dbg_s, ops, args->num_ops); 1019 err = g->ops.dbg_session_ops.exec_reg_ops(dbg_s, ops,
1020 args->num_ops);
1028 /* enable powergate, if previously disabled */ 1021 /* enable powergate, if previously disabled */
1029 if (is_pg_disabled) { 1022 if (is_pg_disabled) {
1030 powergate_err = dbg_s->ops->dbg_set_powergate(dbg_s, 1023 powergate_err =
1024 g->ops.dbg_session_ops.dbg_set_powergate(dbg_s,
1031 NVGPU_DBG_GPU_POWERGATE_MODE_ENABLE); 1025 NVGPU_DBG_GPU_POWERGATE_MODE_ENABLE);
1032 } 1026 }
1033 } 1027 }
@@ -1166,7 +1160,7 @@ static int nvgpu_ioctl_powergate_gk20a(struct dbg_session_gk20a *dbg_s,
1166 dev_name(dbg_s->dev), args->mode); 1160 dev_name(dbg_s->dev), args->mode);
1167 1161
1168 mutex_lock(&g->dbg_sessions_lock); 1162 mutex_lock(&g->dbg_sessions_lock);
1169 err = dbg_s->ops->dbg_set_powergate(dbg_s, args->mode); 1163 err = g->ops.dbg_session_ops.dbg_set_powergate(dbg_s, args->mode);
1170 mutex_unlock(&g->dbg_sessions_lock); 1164 mutex_unlock(&g->dbg_sessions_lock);
1171 return err; 1165 return err;
1172} 1166}
@@ -1404,3 +1398,9 @@ static int gk20a_perfbuf_unmap(struct dbg_session_gk20a *dbg_s,
1404 1398
1405 return 0; 1399 return 0;
1406} 1400}
1401
1402void gk20a_init_dbg_session_ops(struct gpu_ops *gops)
1403{
1404 gops->dbg_session_ops.exec_reg_ops = exec_regops_gk20a;
1405 gops->dbg_session_ops.dbg_set_powergate = dbg_set_powergate;
1406};