diff options
author | Richard Zhao <rizhao@nvidia.com> | 2015-11-16 13:26:23 -0500 |
---|---|---|
committer | Vladislav Buzov <vbuzov@nvidia.com> | 2015-11-23 17:31:02 -0500 |
commit | 1246629c19485d9a9e6fc2c2e7d1f86f65b9516d (patch) | |
tree | b17a44c7d47ffe20ef0d6e4e6bec8acbec9ba5ad /drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c | |
parent | 8ec63298789a0912b9cbd90ee47c76f0701f0dca (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.c | 24 |
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 | ||
345 | static int nvgpu_gpu_ioctl_set_debug_mode( | 329 | static int nvgpu_gpu_ioctl_set_debug_mode( |