Commit aae2d1fc authored by Dave Airlie's avatar Dave Airlie

Merge branch 'drm-etnaviv-fixes' of git://git.pengutronix.de/git/lst/linux into drm-fixes

Single GPU recovery fix
* 'drm-etnaviv-fixes' of git://git.pengutronix.de/git/lst/linux:
  drm/etnaviv: take GPU lock later in the submit process
parents 91d62d9f d9853490
...@@ -1333,8 +1333,6 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, ...@@ -1333,8 +1333,6 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
if (ret < 0) if (ret < 0)
return ret; return ret;
mutex_lock(&gpu->lock);
/* /*
* TODO * TODO
* *
...@@ -1348,16 +1346,18 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, ...@@ -1348,16 +1346,18 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
if (unlikely(event == ~0U)) { if (unlikely(event == ~0U)) {
DRM_ERROR("no free event\n"); DRM_ERROR("no free event\n");
ret = -EBUSY; ret = -EBUSY;
goto out_unlock; goto out_pm_put;
} }
fence = etnaviv_gpu_fence_alloc(gpu); fence = etnaviv_gpu_fence_alloc(gpu);
if (!fence) { if (!fence) {
event_free(gpu, event); event_free(gpu, event);
ret = -ENOMEM; ret = -ENOMEM;
goto out_unlock; goto out_pm_put;
} }
mutex_lock(&gpu->lock);
gpu->event[event].fence = fence; gpu->event[event].fence = fence;
submit->fence = fence->seqno; submit->fence = fence->seqno;
gpu->active_fence = submit->fence; gpu->active_fence = submit->fence;
...@@ -1395,9 +1395,9 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, ...@@ -1395,9 +1395,9 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
hangcheck_timer_reset(gpu); hangcheck_timer_reset(gpu);
ret = 0; ret = 0;
out_unlock:
mutex_unlock(&gpu->lock); mutex_unlock(&gpu->lock);
out_pm_put:
etnaviv_gpu_pm_put(gpu); etnaviv_gpu_pm_put(gpu);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment