aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2016-06-16 11:49:09 -0400
committerRob Clark <robdclark@gmail.com>2016-07-16 10:09:09 -0400
commit6507e799f432d9fa86ba398b095ef1139a70deac (patch)
tree0493feff8a3f7a20fd2817a3493305f58ffa638b /drivers/gpu/drm/msm
parenta8d854c102f880984c9c21241483716ee4054ff2 (diff)
drm/msm/rd: split out snapshot_buf helper
(reduce the noise in next patch) Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm')
-rw-r--r--drivers/gpu/drm/msm/msm_rd.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c
index 3eeb8af0c855..fa02b5a50f31 100644
--- a/drivers/gpu/drm/msm/msm_rd.c
+++ b/drivers/gpu/drm/msm/msm_rd.c
@@ -277,6 +277,26 @@ void msm_rd_debugfs_cleanup(struct drm_minor *minor)
277 kfree(rd); 277 kfree(rd);
278} 278}
279 279
280static void snapshot_buf(struct msm_rd_state *rd,
281 struct msm_gem_submit *submit, int idx,
282 uint32_t iova, uint32_t size)
283{
284 struct msm_gem_object *obj = submit->bos[idx].obj;
285 const char *buf;
286
287 buf = msm_gem_get_vaddr_locked(&obj->base);
288 if (IS_ERR(buf))
289 return;
290
291 buf += iova - submit->bos[idx].iova;
292
293 rd_write_section(rd, RD_GPUADDR,
294 (uint32_t[2]){ iova, size }, 8);
295 rd_write_section(rd, RD_BUFFER_CONTENTS, buf, size);
296
297 msm_gem_put_vaddr_locked(&obj->base);
298}
299
280/* called under struct_mutex */ 300/* called under struct_mutex */
281void msm_rd_dump_submit(struct msm_gem_submit *submit) 301void msm_rd_dump_submit(struct msm_gem_submit *submit)
282{ 302{
@@ -306,21 +326,11 @@ void msm_rd_dump_submit(struct msm_gem_submit *submit)
306 */ 326 */
307 327
308 for (i = 0; i < submit->nr_cmds; i++) { 328 for (i = 0; i < submit->nr_cmds; i++) {
309 uint32_t idx = submit->cmd[i].idx;
310 uint32_t iova = submit->cmd[i].iova; 329 uint32_t iova = submit->cmd[i].iova;
311 uint32_t szd = submit->cmd[i].size; /* in dwords */ 330 uint32_t szd = submit->cmd[i].size; /* in dwords */
312 struct msm_gem_object *obj = submit->bos[idx].obj;
313 const char *buf = msm_gem_get_vaddr_locked(&obj->base);
314
315 if (IS_ERR(buf))
316 continue;
317 331
318 buf += iova - submit->bos[idx].iova; 332 snapshot_buf(rd, submit, submit->cmd[i].idx,
319 333 submit->cmd[i].iova, szd * 4);
320 rd_write_section(rd, RD_GPUADDR,
321 (uint32_t[2]){ iova, szd * 4 }, 8);
322 rd_write_section(rd, RD_BUFFER_CONTENTS,
323 buf, szd * 4);
324 334
325 switch (submit->cmd[i].type) { 335 switch (submit->cmd[i].type) {
326 case MSM_SUBMIT_CMD_IB_TARGET_BUF: 336 case MSM_SUBMIT_CMD_IB_TARGET_BUF:
@@ -335,8 +345,6 @@ void msm_rd_dump_submit(struct msm_gem_submit *submit)
335 (uint32_t[2]){ iova, szd }, 8); 345 (uint32_t[2]){ iova, szd }, 8);
336 break; 346 break;
337 } 347 }
338
339 msm_gem_put_vaddr_locked(&obj->base);
340 } 348 }
341} 349}
342#endif 350#endif