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/gm20b/mm_gm20b.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/gm20b/mm_gm20b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/mm_gm20b.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c index 3d75a631..9fdd860b 100644 --- a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c | |||
@@ -78,6 +78,31 @@ static bool gm20b_mm_mmu_debug_mode_enabled(struct gk20a *g) | |||
78 | gr_gpcs_pri_mmu_debug_ctrl_debug_enabled_v(); | 78 | gr_gpcs_pri_mmu_debug_ctrl_debug_enabled_v(); |
79 | } | 79 | } |
80 | 80 | ||
81 | static void gm20b_mm_mmu_set_debug_mode(struct gk20a *g, bool enable) | ||
82 | { | ||
83 | u32 reg_val, fb_debug_ctrl, gpc_debug_ctrl; | ||
84 | |||
85 | if (enable) { | ||
86 | fb_debug_ctrl = fb_mmu_debug_ctrl_debug_enabled_f(); | ||
87 | gpc_debug_ctrl = gr_gpcs_pri_mmu_debug_ctrl_debug_enabled_f(); | ||
88 | g->mmu_debug_ctrl = true; | ||
89 | } else { | ||
90 | fb_debug_ctrl = fb_mmu_debug_ctrl_debug_disabled_f(); | ||
91 | gpc_debug_ctrl = gr_gpcs_pri_mmu_debug_ctrl_debug_disabled_f(); | ||
92 | g->mmu_debug_ctrl = false; | ||
93 | } | ||
94 | |||
95 | reg_val = gk20a_readl(g, fb_mmu_debug_ctrl_r()); | ||
96 | reg_val = set_field(reg_val, | ||
97 | fb_mmu_debug_ctrl_debug_m(), fb_debug_ctrl); | ||
98 | gk20a_writel(g, fb_mmu_debug_ctrl_r(), reg_val); | ||
99 | |||
100 | reg_val = gk20a_readl(g, gr_gpcs_pri_mmu_debug_ctrl_r()); | ||
101 | reg_val = set_field(reg_val, | ||
102 | gr_gpcs_pri_mmu_debug_ctrl_debug_m(), gpc_debug_ctrl); | ||
103 | gk20a_writel(g, gr_gpcs_pri_mmu_debug_ctrl_r(), reg_val); | ||
104 | } | ||
105 | |||
81 | static void gm20b_mm_set_big_page_size(struct gk20a *g, | 106 | static void gm20b_mm_set_big_page_size(struct gk20a *g, |
82 | void *inst_ptr, int size) | 107 | void *inst_ptr, int size) |
83 | { | 108 | { |
@@ -112,6 +137,7 @@ void gm20b_init_mm(struct gpu_ops *gops) | |||
112 | { | 137 | { |
113 | gops->mm.support_sparse = gm20b_mm_support_sparse; | 138 | gops->mm.support_sparse = gm20b_mm_support_sparse; |
114 | gops->mm.is_debug_mode_enabled = gm20b_mm_mmu_debug_mode_enabled; | 139 | gops->mm.is_debug_mode_enabled = gm20b_mm_mmu_debug_mode_enabled; |
140 | gops->mm.set_debug_mode = gm20b_mm_mmu_set_debug_mode; | ||
115 | gops->mm.gmmu_map = gk20a_locked_gmmu_map; | 141 | gops->mm.gmmu_map = gk20a_locked_gmmu_map; |
116 | gops->mm.gmmu_unmap = gk20a_locked_gmmu_unmap; | 142 | gops->mm.gmmu_unmap = gk20a_locked_gmmu_unmap; |
117 | gops->mm.vm_remove = gk20a_vm_remove_support; | 143 | gops->mm.vm_remove = gk20a_vm_remove_support; |