[PATCH 1/4] drm/amdgpu: Optimization of critical section
Christian König
deathsimple at vodafone.de
Mon Jun 12 23:00:51 UTC 2017
Am 12.06.2017 um 22:31 schrieb Alex Xie:
> This patch is to move a loop of unref BOs and
> several memory free function calls out of
> critical sections.
>
> Signed-off-by: Alex Xie <AlexBin.Xie at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> index a664987..02c138f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> @@ -75,9 +75,12 @@ static void amdgpu_bo_list_destroy(struct amdgpu_fpriv *fpriv, int id)
> /* Another user may have a reference to this list still */
> mutex_lock(&list->lock);
> mutex_unlock(&list->lock);
> + mutex_unlock(&fpriv->bo_list_lock);
> amdgpu_bo_list_free(list);
> }
> - mutex_unlock(&fpriv->bo_list_lock);
> + else {
> + mutex_unlock(&fpriv->bo_list_lock);
> + }
You could move the unlock of bo_list_lock even before the if.
But since you pointed it out there is quite a bug in this function:
> /* Another user may have a reference to this list still */
> mutex_lock(&list->lock);
> mutex_unlock(&list->lock);
Not sure if that is still up to date, but that use case used to be
illegal with mutexes.
Christian.
> }
>
> static int amdgpu_bo_list_set(struct amdgpu_device *adev,
More information about the amd-gfx
mailing list