mirror of https://gitee.com/openkylin/linux.git
drm/msm: dump a rd GPUADDR header for all buffers in the command
Currently the rd dump avoids any buffers marked as WRITE under the assumption that the contents are not interesting. While it is true that the contents are uninteresting we should still print the iova and size for all buffers so that any listening replay tools can correctly construct the submission. Print the header for all buffers but only dump the contents for buffers marked as READ. Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
3ceaa1411d
commit
78b8e5b847
|
@ -268,10 +268,6 @@ static void snapshot_buf(struct msm_rd_state *rd,
|
||||||
struct msm_gem_object *obj = submit->bos[idx].obj;
|
struct msm_gem_object *obj = submit->bos[idx].obj;
|
||||||
const char *buf;
|
const char *buf;
|
||||||
|
|
||||||
buf = msm_gem_get_vaddr(&obj->base);
|
|
||||||
if (IS_ERR(buf))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (iova) {
|
if (iova) {
|
||||||
buf += iova - submit->bos[idx].iova;
|
buf += iova - submit->bos[idx].iova;
|
||||||
} else {
|
} else {
|
||||||
|
@ -279,8 +275,21 @@ static void snapshot_buf(struct msm_rd_state *rd,
|
||||||
size = obj->base.size;
|
size = obj->base.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Always write the GPUADDR header so can get a complete list of all the
|
||||||
|
* buffers in the cmd
|
||||||
|
*/
|
||||||
rd_write_section(rd, RD_GPUADDR,
|
rd_write_section(rd, RD_GPUADDR,
|
||||||
(uint32_t[3]){ iova, size, iova >> 32 }, 12);
|
(uint32_t[3]){ iova, size, iova >> 32 }, 12);
|
||||||
|
|
||||||
|
/* But only dump the contents of buffers marked READ */
|
||||||
|
if (!(submit->bos[idx].flags & MSM_SUBMIT_BO_READ))
|
||||||
|
return;
|
||||||
|
|
||||||
|
buf = msm_gem_get_vaddr(&obj->base);
|
||||||
|
if (IS_ERR(buf))
|
||||||
|
return;
|
||||||
|
|
||||||
rd_write_section(rd, RD_BUFFER_CONTENTS, buf, size);
|
rd_write_section(rd, RD_BUFFER_CONTENTS, buf, size);
|
||||||
|
|
||||||
msm_gem_put_vaddr(&obj->base);
|
msm_gem_put_vaddr(&obj->base);
|
||||||
|
@ -309,17 +318,8 @@ void msm_rd_dump_submit(struct msm_gem_submit *submit)
|
||||||
|
|
||||||
rd_write_section(rd, RD_CMD, msg, ALIGN(n, 4));
|
rd_write_section(rd, RD_CMD, msg, ALIGN(n, 4));
|
||||||
|
|
||||||
if (rd_full) {
|
for (i = 0; rd_full && i < submit->nr_bos; i++)
|
||||||
for (i = 0; i < submit->nr_bos; i++) {
|
snapshot_buf(rd, submit, i, 0, 0);
|
||||||
/* buffers that are written to probably don't start out
|
|
||||||
* with anything interesting:
|
|
||||||
*/
|
|
||||||
if (submit->bos[i].flags & MSM_SUBMIT_BO_WRITE)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
snapshot_buf(rd, submit, i, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < submit->nr_cmds; i++) {
|
for (i = 0; i < submit->nr_cmds; i++) {
|
||||||
uint64_t iova = submit->cmd[i].iova;
|
uint64_t iova = submit->cmd[i].iova;
|
||||||
|
|
Loading…
Reference in New Issue