drm/amdgpu: re-create idle bo's PTE during VM state machine reset
authorZhenGuo Yin <zhenguo.yin@amd.com>
Tue, 19 Dec 2023 06:39:42 +0000 (14:39 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Jan 2024 12:42:35 +0000 (12:42 +0000)
[ Upstream commit 4a0057afa35872a5f2e65576785844688dd9fa5e ]

Idle bo's PTE needs to be re-created when resetting VM state machine.
Set idle bo's vm_bo as moved to mark it as invalid.

Fixes: 55bf196f60df ("drm/amdgpu: reset VM when an error is detected")
Signed-off-by: ZhenGuo Yin <zhenguo.yin@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index 89c8e51cd332376f3ae038c09cf05845164bacc5..9fe1278fd58611d15de12c339546ba52c9c8c720 100644 (file)
@@ -285,6 +285,7 @@ static void amdgpu_vm_bo_reset_state_machine(struct amdgpu_vm *vm)
        list_for_each_entry_safe(vm_bo, tmp, &vm->idle, vm_status) {
                struct amdgpu_bo *bo = vm_bo->bo;
 
+               vm_bo->moved = true;
                if (!bo || bo->tbo.type != ttm_bo_type_kernel)
                        list_move(&vm_bo->vm_status, &vm_bo->vm->moved);
                else if (bo->parent)