[PATCH] drm/amdgpu: fix moved list handling in the VM

Deucher, Alexander Alexander.Deucher at amd.com
Fri Sep 1 14:59:37 UTC 2017


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Christian König
> Sent: Friday, September 01, 2017 9:05 AM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH] drm/amdgpu: fix moved list handling in the VM
> 
> From: Christian König <christian.koenig at amd.com>
> 
> Only move BOs to the moved/relocated list when they aren't already on a
> list.
> 
> This prevents accidential removal from the evicted list.
> 
> Signed-off-by: Christian König <christian.koenig at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 8910e20..cfc8de8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -1177,7 +1177,8 @@ static void amdgpu_vm_invalidate_level(struct
> amdgpu_vm *vm,
> 
>  		entry->addr = ~0ULL;
>  		spin_lock(&vm->status_lock);
> -		list_move(&entry->base.vm_status, &vm->relocated);
> +		if (list_empty(&entry->base.vm_status))
> +			list_add(&entry->base.vm_status, &vm->relocated);
>  		spin_unlock(&vm->status_lock);
>  		amdgpu_vm_invalidate_level(vm, entry);
>  	}
> @@ -2090,7 +2091,8 @@ static void amdgpu_vm_bo_insert_map(struct
> amdgpu_device *adev,
> 
>  	if (bo && bo->tbo.resv == vm->root.base.bo->tbo.resv) {
>  		spin_lock(&vm->status_lock);
> -		list_move(&bo_va->base.vm_status, &vm->moved);
> +		if (list_empty(&bo_va->base.vm_status))
> +			list_add(&bo_va->base.vm_status, &vm->moved);
>  		spin_unlock(&vm->status_lock);
>  	}
>  	trace_amdgpu_vm_bo_map(bo_va, mapping);
> @@ -2445,7 +2447,8 @@ void amdgpu_vm_bo_invalidate(struct
> amdgpu_device *adev,
>  		}
> 
>  		spin_lock(&bo_base->vm->status_lock);
> -		list_move(&bo_base->vm_status, &bo_base->vm->moved);
> +		if (list_empty(&bo_base->vm_status))
> +			list_add(&bo_base->vm_status, &vm->moved);
>  		spin_unlock(&bo_base->vm->status_lock);
>  	}
>  }
> --
> 2.7.4
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list