drm/etnaviv: fix crash in GPU suspend when init failed due to buffer placement
authorLucas Stach <l.stach@pengutronix.de>
Mon, 23 Jul 2018 12:27:23 +0000 (14:27 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Mon, 6 Aug 2018 13:24:33 +0000 (15:24 +0200)
When the suballocator was unable to provide a suitable buffer for the MMUv1
linear window, we roll back the GPU initialization. As the GPU is runtime
resumed at that point we need to clear the kernel cmdbuf suballoc entry to
properly skip any attempt to manipulate the cmdbuf when the GPU gets shut
down in the runtime suspend later on.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
drivers/gpu/drm/etnaviv/etnaviv_gpu.c

index 18c2224ba0b80e2fc82fdb4bb5ff7d5ab55ce4cf..ab8dfe7f69d6cac30c19f1c9bdf949719adbbc50 100644 (file)
@@ -799,6 +799,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
 
 free_buffer:
        etnaviv_cmdbuf_free(&gpu->buffer);
+       gpu->buffer.suballoc = NULL;
 destroy_iommu:
        etnaviv_iommu_destroy(gpu->mmu);
        gpu->mmu = NULL;