Skip to content

Commit

Permalink
drm/etnaviv: move submit free out of critical section
Browse files Browse the repository at this point in the history
There is no need to hold the GPU lock while freeing the submit
object. Only move the retired submits from the GPU active list to
a temporary retire list under the GPU lock.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
  • Loading branch information
Lucas Stach committed Jan 2, 2018
1 parent a7cfa56 commit 2e3a2dd
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions drivers/gpu/drm/etnaviv/etnaviv_gpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1201,20 +1201,22 @@ static void retire_worker(struct work_struct *work)
retire_work);
u32 fence = gpu->completed_fence;
struct etnaviv_gem_submit *submit, *tmp;
LIST_HEAD(retire_list);

mutex_lock(&gpu->lock);
list_for_each_entry_safe(submit, tmp, &gpu->active_submit_list, node) {
if (!dma_fence_is_signaled(submit->out_fence))
break;

list_del(&submit->node);

etnaviv_submit_put(submit);
list_move(&submit->node, &retire_list);
}

gpu->retired_fence = fence;

mutex_unlock(&gpu->lock);

list_for_each_entry_safe(submit, tmp, &retire_list, node)
etnaviv_submit_put(submit);
}

int etnaviv_gpu_wait_fence_interruptible(struct etnaviv_gpu *gpu,
Expand Down

0 comments on commit 2e3a2dd

Please sign in to comment.