]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/etnaviv: put submit prev MMU context when it exists
authorLucas Stach <l.stach@pengutronix.de>
Fri, 20 Aug 2021 20:18:24 +0000 (22:18 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Thu, 16 Sep 2021 08:35:11 +0000 (10:35 +0200)
The prev context is the MMU context at the time of the job
queueing in hardware. As a job might be queued multiple times
due to recovery after a GPU hang, we need to make sure to put
the stale prev MMU context from a prior queuing, to avoid the
reference and thus the MMU context leaking.

Cc: stable@vger.kernel.org # 5.4
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Michael Walle <michael@walle.cc>
Tested-by: Marek Vasut <marex@denx.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
drivers/gpu/drm/etnaviv/etnaviv_gpu.c

index 6722efcf858a2d3b4137ce92bf077866513519d3..0f700400937e6193ab10995248ac02b9bea58bad 100644 (file)
@@ -1374,6 +1374,8 @@ struct dma_fence *etnaviv_gpu_submit(struct etnaviv_gem_submit *submit)
                gpu->mmu_context = etnaviv_iommu_context_get(submit->mmu_context);
                etnaviv_gpu_start_fe_idleloop(gpu);
        } else {
+               if (submit->prev_mmu_context)
+                       etnaviv_iommu_context_put(submit->prev_mmu_context);
                submit->prev_mmu_context = etnaviv_iommu_context_get(gpu->mmu_context);
        }