summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
diff options
context:
space:
mode:
authorRichard Zhao <rizhao@nvidia.com>2015-11-16 13:26:23 -0500
committerVladislav Buzov <vbuzov@nvidia.com>2015-11-23 17:31:02 -0500
commit1246629c19485d9a9e6fc2c2e7d1f86f65b9516d (patch)
treeb17a44c7d47ffe20ef0d6e4e6bec8acbec9ba5ad /drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
parent8ec63298789a0912b9cbd90ee47c76f0701f0dca (diff)
gpu: nvgpu: abstract set mmu debug mode
Add new operaton g->ops.mm.set_debug_mode and let other places that set debug mode call this callback. It's preparing for adding vgpu set mmu debug mode hook. JIRA VFND-1005 Bug 1594604 Change-Id: I1d227a0c0f96adb0035ae16ae1f4fbfa739bf0a7 Signed-off-by: Richard Zhao <rizhao@nvidia.com> Reviewed-on: http://git-master/r/833497 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Vladislav Buzov <vbuzov@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
index 18567064..4f33c78f 100644
--- a/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
@@ -313,33 +313,17 @@ static int nvgpu_gpu_ioctl_set_mmu_debug_mode(
313 struct gk20a *g, 313 struct gk20a *g,
314 struct nvgpu_gpu_mmu_debug_mode_args *args) 314 struct nvgpu_gpu_mmu_debug_mode_args *args)
315{ 315{
316 int err = 0; 316 if (gk20a_busy(g->dev)) {
317 u32 reg_val, mmu_debug_ctrl;
318
319 err = gk20a_busy(g->dev);
320 if (err) {
321 gk20a_err(dev_from_gk20a(g), "failed to power on gpu\n"); 317 gk20a_err(dev_from_gk20a(g), "failed to power on gpu\n");
322 return -EINVAL; 318 return -EINVAL;
323 } 319 }
324 320
325 mutex_lock(&g->dbg_sessions_lock); 321 mutex_lock(&g->dbg_sessions_lock);
326 322 g->ops.mm.set_debug_mode(g, args->state == 1);
327 if (args->state == 1) {
328 mmu_debug_ctrl = fb_mmu_debug_ctrl_debug_enabled_f();
329 g->mmu_debug_ctrl = true;
330 } else {
331 mmu_debug_ctrl = fb_mmu_debug_ctrl_debug_disabled_f();
332 g->mmu_debug_ctrl = false;
333 }
334
335 reg_val = gk20a_readl(g, fb_mmu_debug_ctrl_r());
336 reg_val = set_field(reg_val,
337 fb_mmu_debug_ctrl_debug_m(), mmu_debug_ctrl);
338 gk20a_writel(g, fb_mmu_debug_ctrl_r(), reg_val);
339
340 mutex_unlock(&g->dbg_sessions_lock); 323 mutex_unlock(&g->dbg_sessions_lock);
324
341 gk20a_idle(g->dev); 325 gk20a_idle(g->dev);
342 return err; 326 return 0;
343} 327}
344 328
345static int nvgpu_gpu_ioctl_set_debug_mode( 329static int nvgpu_gpu_ioctl_set_debug_mode(