On 5/28/26 17:00, Natalie Vock wrote:
> The "moved" VM state is a bit unfortunately named, because BOs can end
> up in this state without being physically moved. While we need to
> invalidate every mapping when BOs are physically moved, in some other
> cases like PRT binds/unbinds there is no need to refresh mappings except
> those affected by the bind.
> 
> Full invalidation of all BO mappings manifested as severe regressions in
> PRT bind performance, which this patch fixes. The offending patch is
> 53f0235c0284 ("drm/amdgpu: restructure VM state machine v4") in the
> amd-staging-drm-next tree, although it has not yet propagated anywhere
> else.
> 
> Signed-off-by: Natalie Vock <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index beaf0aef6f474..05064a9c9f9f6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -232,7 +232,6 @@ static void amdgpu_vm_bo_moved(struct amdgpu_vm_bo_base 
> *vm_bo)
>               vm_bo->moved = false;
>               list_move(&vm_bo->vm_status, &lists->idle);
>       } else {
> -             vm_bo->moved = true;
>               list_move(&vm_bo->vm_status, &lists->moved);
>       }
>       amdgpu_vm_bo_unlock_lists(vm_bo);
> @@ -2280,6 +2279,7 @@ void amdgpu_vm_bo_invalidate(struct amdgpu_bo *bo, bool 
> evicted)
>  
>               if (bo_base->moved)
>                       continue;
> +             bo_base->moved = true;

Please add that before all the amdgpu_vm_bo_moved() calls in 
amdgpu_vm_validate() as well.

Apart from that looks good to me,
Christian.

>               amdgpu_vm_bo_moved(bo_base);
>       }
>  }

Reply via email to