On 2017-08-10 10:50 AM, Christian König wrote:
> @@ -2384,11 +2360,24 @@ void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
>   * Mark @bo as invalid.
>   */
>  void amdgpu_vm_bo_invalidate(struct amdgpu_device *adev,
> -                          struct amdgpu_bo *bo)
> +                          struct amdgpu_bo *bo, bool evicted)
>  {
>       struct amdgpu_vm_bo_base *bo_base;
>  
>       list_for_each_entry(bo_base, &bo->va, bo_list) {
> +             struct amdgpu_vm *vm = bo_base->vm;
> +
> +             if (evicted && bo->tbo.resv == vm->root.base.bo->tbo.resv) {
> +                     spin_lock(&bo_base->vm->status_lock);
> +                     list_move(&bo_base->vm_status, &vm->evicted);
> +                     spin_unlock(&bo_base->vm->status_lock);
> +                     continue;
> +             }
> +
> +             /* Don't add page tables to the moved state */
> +             if (bo->tbo.type == ttm_bo_type_kernel)
> +                     continue;
> +

It looks like you're using two different conditions to detect page
tables. When evicted is true, you use (bo->tbo.resv ==
vm->root.base.bo->tbo.resv). Otherwise you use (bo->tbo.type ==
ttm_bo_type_kernel). Are these really the same or is there a subtle
difference I'm missing? I'd find the following logic easier to read, but
I'm not sure if that's really your intention:

        if (bo->tbo.resv == vm->root.base.bo->tbo.resv) {
                spin_lock(&bo_base->vm->status_lock);

                if (evicted)
                        list_move(&bo_base->vm_status, &vm->evicted);
                else if (list_empty(&bo_base->vm_status))
                        /* this is from the next commit */
                        list_add(&bo_base->vm_status, &vm->relocated);

                spin_unlock(&bo_base->vm->status_lock);
                continue;
        }

Regards,
  Felix

>               spin_lock(&bo_base->vm->status_lock);
>               if (list_empty(&bo_base->vm_status))
>                       list_add(&bo_base->vm_status,

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to