drm/msm: devcoredump should dump MSM_SUBMIT_BO_DUMP buffers
Also log buffers with the DUMP flag set, to ensure we capture all useful cmdstream in crashdump state with modern mesa. Otherwise we miss out on the contents of "state object" cmdstream buffers. v2: add missing 'inline' Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org>
This commit is contained in:
@@ -355,16 +355,34 @@ static void msm_gpu_crashstate_capture(struct msm_gpu *gpu,
|
||||
state->cmd = kstrdup(cmd, GFP_KERNEL);
|
||||
|
||||
if (submit) {
|
||||
int i;
|
||||
int i, nr = 0;
|
||||
|
||||
state->bos = kcalloc(submit->nr_cmds,
|
||||
/* count # of buffers to dump: */
|
||||
for (i = 0; i < submit->nr_bos; i++)
|
||||
if (should_dump(submit, i))
|
||||
nr++;
|
||||
/* always dump cmd bo's, but don't double count them: */
|
||||
for (i = 0; i < submit->nr_cmds; i++)
|
||||
if (!should_dump(submit, submit->cmd[i].idx))
|
||||
nr++;
|
||||
|
||||
state->bos = kcalloc(nr,
|
||||
sizeof(struct msm_gpu_state_bo), GFP_KERNEL);
|
||||
|
||||
for (i = 0; i < submit->nr_bos; i++) {
|
||||
if (should_dump(submit, i)) {
|
||||
msm_gpu_crashstate_get_bo(state, submit->bos[i].obj,
|
||||
submit->bos[i].iova, submit->bos[i].flags);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; state->bos && i < submit->nr_cmds; i++) {
|
||||
int idx = submit->cmd[i].idx;
|
||||
|
||||
msm_gpu_crashstate_get_bo(state, submit->bos[idx].obj,
|
||||
submit->bos[idx].iova, submit->bos[idx].flags);
|
||||
if (!should_dump(submit, submit->cmd[i].idx)) {
|
||||
msm_gpu_crashstate_get_bo(state, submit->bos[idx].obj,
|
||||
submit->bos[idx].iova, submit->bos[idx].flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user