diff options
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/dbg_vgpu.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/dbg_vgpu.c b/drivers/gpu/nvgpu/vgpu/dbg_vgpu.c index b9cbcead..72faf76c 100644 --- a/drivers/gpu/nvgpu/vgpu/dbg_vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/dbg_vgpu.c | |||
@@ -178,6 +178,37 @@ static void vgpu_release_profiler_reservation( | |||
178 | vgpu_sendrecv_prof_cmd(dbg_s, TEGRA_VGPU_PROF_RELEASE); | 178 | vgpu_sendrecv_prof_cmd(dbg_s, TEGRA_VGPU_PROF_RELEASE); |
179 | } | 179 | } |
180 | 180 | ||
181 | static int vgpu_sendrecv_perfbuf_cmd(struct gk20a *g, u64 offset, u32 size) | ||
182 | { | ||
183 | struct mm_gk20a *mm = &g->mm; | ||
184 | struct vm_gk20a *vm = mm->perfbuf.vm; | ||
185 | struct tegra_vgpu_cmd_msg msg; | ||
186 | struct tegra_vgpu_perfbuf_mgt_params *p = | ||
187 | &msg.params.perfbuf_management; | ||
188 | int err; | ||
189 | |||
190 | msg.cmd = TEGRA_VGPU_CMD_PERFBUF_MGT; | ||
191 | msg.handle = vgpu_get_handle(g); | ||
192 | |||
193 | p->vm_handle = vm->handle; | ||
194 | p->offset = offset; | ||
195 | p->size = size; | ||
196 | |||
197 | err = vgpu_comm_sendrecv(&msg, sizeof(msg), sizeof(msg)); | ||
198 | err = err ? err : msg.ret; | ||
199 | return err; | ||
200 | } | ||
201 | |||
202 | static int vgpu_perfbuffer_enable(struct gk20a *g, u64 offset, u32 size) | ||
203 | { | ||
204 | return vgpu_sendrecv_perfbuf_cmd(g, offset, size); | ||
205 | } | ||
206 | |||
207 | static int vgpu_perfbuffer_disable(struct gk20a *g) | ||
208 | { | ||
209 | return vgpu_sendrecv_perfbuf_cmd(g, 0, 0); | ||
210 | } | ||
211 | |||
181 | void vgpu_init_dbg_session_ops(struct gpu_ops *gops) | 212 | void vgpu_init_dbg_session_ops(struct gpu_ops *gops) |
182 | { | 213 | { |
183 | gops->dbg_session_ops.exec_reg_ops = vgpu_exec_regops; | 214 | gops->dbg_session_ops.exec_reg_ops = vgpu_exec_regops; |
@@ -188,4 +219,6 @@ void vgpu_init_dbg_session_ops(struct gpu_ops *gops) | |||
188 | vgpu_check_and_set_context_reservation; | 219 | vgpu_check_and_set_context_reservation; |
189 | gops->dbg_session_ops.release_profiler_reservation = | 220 | gops->dbg_session_ops.release_profiler_reservation = |
190 | vgpu_release_profiler_reservation; | 221 | vgpu_release_profiler_reservation; |
222 | gops->dbg_session_ops.perfbuffer_enable = vgpu_perfbuffer_enable; | ||
223 | gops->dbg_session_ops.perfbuffer_disable = vgpu_perfbuffer_disable; | ||
191 | } | 224 | } |