Skip to content

Commit 64fd6d0

Browse files
vldlyrobclark
authored andcommitted
drm/msm/a5xx: properly clear preemption records on resume
Two fields of preempt_record which are used by CP aren't reset on resume: "data" and "info". This is the reason behind faults which happen when we try to switch to the ring that was active last before suspend. In addition those faults can't be recovered from because we use suspend and resume to do so (keeping values of those fields again). Fixes: b1fc283 ("drm/msm: Implement preemption for A5XX targets") Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/612043/ Signed-off-by: Rob Clark <robdclark@chromium.org>
1 parent db9dec2 commit 64fd6d0

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

drivers/gpu/drm/msm/adreno/a5xx_preempt.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,8 @@ void a5xx_preempt_hw_init(struct msm_gpu *gpu)
204204
return;
205205

206206
for (i = 0; i < gpu->nr_rings; i++) {
207+
a5xx_gpu->preempt[i]->data = 0;
208+
a5xx_gpu->preempt[i]->info = 0;
207209
a5xx_gpu->preempt[i]->wptr = 0;
208210
a5xx_gpu->preempt[i]->rptr = 0;
209211
a5xx_gpu->preempt[i]->rbase = gpu->rb[i]->iova;

0 commit comments

Comments
 (0)