diff options
author | Rob Clark <robdclark@gmail.com> | 2016-06-16 11:49:09 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2016-07-16 10:09:09 -0400 |
commit | 6507e799f432d9fa86ba398b095ef1139a70deac (patch) | |
tree | 0493feff8a3f7a20fd2817a3493305f58ffa638b /drivers/gpu/drm/msm | |
parent | a8d854c102f880984c9c21241483716ee4054ff2 (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.c | 36 |
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 | ||
280 | static 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 */ |
281 | void msm_rd_dump_submit(struct msm_gem_submit *submit) | 301 | void 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 |