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);
> }
> }