AMD General The patch has been verified; feel free to add Reviewed-by: Jesse Zhang <[email protected]> and Tested-by: Jesse Zhang <[email protected]>
> -----Original Message----- > From: amd-gfx <[email protected]> On Behalf Of Christian > König > Sent: Friday, May 22, 2026 5:32 PM > To: Deucher, Alexander <[email protected]>; amd- > [email protected] > Subject: [PATCH] drm/amdgpu: fix amdgpu_vm_bo_reset_state_machine > > Can't splice the list but need to handle each entry individually. > > Otherwise we run into issues after a GPU reset. > > Signed-off-by: Christian König <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index b523a7b97d6f..e91504f04d97 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -266,12 +266,23 @@ static void amdgpu_vm_bo_idle(struct > amdgpu_vm_bo_base *vm_bo) > */ > static void amdgpu_vm_bo_reset_state_machine(struct amdgpu_vm *vm) { > + struct amdgpu_vm_bo_base *vm_bo, *tmp; > + > + /* > + * Don't use list splice here, we need the special handling for the root > + * PD and set the moved flag appropriately. > + */ > amdgpu_vm_assert_locked(vm); > - list_splice_init(&vm->kernel.idle, &vm->kernel.moved); > - list_splice_init(&vm->always_valid.idle, &vm->always_valid.moved); > + list_for_each_entry_safe(vm_bo, tmp, &vm->kernel.idle, vm_status) > + amdgpu_vm_bo_moved(vm_bo); > + list_for_each_entry_safe(vm_bo, tmp, &vm->always_valid.idle, vm_status) > + amdgpu_vm_bo_moved(vm_bo); > > spin_lock(&vm->individual_lock); > - list_splice_init(&vm->individual.idle, &vm->individual.moved); > + list_for_each_entry_safe(vm_bo, tmp, &vm->individual.idle, vm_status) { > + vm_bo->moved = true; > + list_move(&vm_bo->vm_status, &vm->individual.moved); > + } > spin_unlock(&vm->individual_lock); > } > > -- > 2.43.0
