| From 8f3eea9d01d7b0f95b0fe04187c0059019ada85b Mon Sep 17 00:00:00 2001 |
| From: Lucas Stach <l.stach@pengutronix.de> |
| Date: Fri, 20 Aug 2021 22:18:26 +0200 |
| Subject: drm/etnaviv: keep MMU context across runtime suspend/resume |
| |
| From: Lucas Stach <l.stach@pengutronix.de> |
| |
| commit 8f3eea9d01d7b0f95b0fe04187c0059019ada85b upstream. |
| |
| The MMU state may be kept across a runtime suspend/resume cycle, as we |
| avoid a full hardware reset to keep the latency of the runtime PM small. |
| |
| Don't pretend that the MMU state is lost in driver state. The MMU |
| context is pushed out when new HW jobs with a different context are |
| coming in. The only exception to this is when the GPU is unbound, in |
| which case we need to make sure to also free the last active context. |
| |
| Cc: stable@vger.kernel.org # 5.4 |
| Reported-by: Michael Walle <michael@walle.cc> |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c |
| +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c |
| @@ -1590,9 +1590,6 @@ static int etnaviv_gpu_hw_suspend(struct |
| */ |
| etnaviv_gpu_wait_idle(gpu, 100); |
| |
| - etnaviv_iommu_context_put(gpu->mmu_context); |
| - gpu->mmu_context = NULL; |
| - |
| gpu->fe_running = false; |
| } |
| |
| @@ -1741,6 +1738,9 @@ static void etnaviv_gpu_unbind(struct de |
| etnaviv_gpu_hw_suspend(gpu); |
| #endif |
| |
| + if (gpu->mmu_context) |
| + etnaviv_iommu_context_put(gpu->mmu_context); |
| + |
| if (gpu->initialized) { |
| etnaviv_cmdbuf_free(&gpu->buffer); |
| etnaviv_iommu_global_fini(gpu); |