mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-07 09:55:19 +02:00
drm/msm/a5xx: properly clear preemption records on resume
[ Upstream commit64fd6d01a5
] 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:b1fc2839d2
("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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
b941514532
commit
dfd012052b
|
@ -204,6 +204,8 @@ void a5xx_preempt_hw_init(struct msm_gpu *gpu)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < gpu->nr_rings; i++) {
|
for (i = 0; i < gpu->nr_rings; i++) {
|
||||||
|
a5xx_gpu->preempt[i]->data = 0;
|
||||||
|
a5xx_gpu->preempt[i]->info = 0;
|
||||||
a5xx_gpu->preempt[i]->wptr = 0;
|
a5xx_gpu->preempt[i]->wptr = 0;
|
||||||
a5xx_gpu->preempt[i]->rptr = 0;
|
a5xx_gpu->preempt[i]->rptr = 0;
|
||||||
a5xx_gpu->preempt[i]->rbase = gpu->rb[i]->iova;
|
a5xx_gpu->preempt[i]->rbase = gpu->rb[i]->iova;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user