Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: b1fc2839d2f9 ("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>

authored by

Vladimir Lypak and committed by
Rob Clark
64fd6d01 db9dec2d

+2
+2
drivers/gpu/drm/msm/adreno/a5xx_preempt.c
··· 204 204 return; 205 205 206 206 for (i = 0; i < gpu->nr_rings; i++) { 207 + a5xx_gpu->preempt[i]->data = 0; 208 + a5xx_gpu->preempt[i]->info = 0; 207 209 a5xx_gpu->preempt[i]->wptr = 0; 208 210 a5xx_gpu->preempt[i]->rptr = 0; 209 211 a5xx_gpu->preempt[i]->rbase = gpu->rb[i]->iova;