aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2017-03-22 07:07:23 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-04-08 03:30:35 -0400
commit4366c7e346ce7988119fe7744983f245fe4e818e (patch)
treec671819bf58e9fabd4dbbbb5aef08da47f8d5ad3 /drivers/gpu/drm
parent6acf5207085723e7a98233b3b6a02ecc4e6ab6cb (diff)
drm/etnaviv: (re-)protect fence allocation with GPU mutex
commit f3cd1b064f1179d9e6188c6d67297a2360880e10 upstream. The fence allocation needs to be protected by the GPU mutex, otherwise the fence seqnos of concurrent submits might not match the insertion order of the jobs in the kernel ring. This breaks the assumption that jobs complete with monotonically increasing fence seqnos. Fixes: d9853490176c (drm/etnaviv: take GPU lock later in the submit process) Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gpu.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index b1254f885fed..b87d27859141 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1299,6 +1299,8 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
1299 goto out_pm_put; 1299 goto out_pm_put;
1300 } 1300 }
1301 1301
1302 mutex_lock(&gpu->lock);
1303
1302 fence = etnaviv_gpu_fence_alloc(gpu); 1304 fence = etnaviv_gpu_fence_alloc(gpu);
1303 if (!fence) { 1305 if (!fence) {
1304 event_free(gpu, event); 1306 event_free(gpu, event);
@@ -1306,8 +1308,6 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
1306 goto out_pm_put; 1308 goto out_pm_put;
1307 } 1309 }
1308 1310
1309 mutex_lock(&gpu->lock);
1310
1311 gpu->event[event].fence = fence; 1311 gpu->event[event].fence = fence;
1312 submit->fence = fence->seqno; 1312 submit->fence = fence->seqno;
1313 gpu->active_fence = submit->fence; 1313 gpu->active_fence = submit->fence;