[PATCH] drm/amdgpu: fix nullptr error of amdgpu_vm_handle_moved

Heng Zhou Heng.Zhou at amd.com
Thu Jul 31 08:36:04 UTC 2025


If a amdgpu_bo_va is fpriv->prt_va, the bo of this one is always NULL.
So, such kind of amdgpu_bo_va should be updated separately within
amdgpu_vm_handle_moved.

Signed-off-by: Heng Zhou <Heng.Zhou at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 283dd44f04b0..f88b3e3448f5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -578,7 +578,7 @@ int amdgpu_vm_validate(struct amdgpu_device *adev, struct amdgpu_vm *vm,
 	struct amdgpu_vm_bo_base *bo_base;
 	struct amdgpu_bo *bo;
 	int r;
-
+	
 	if (vm->generation != new_vm_generation) {
 		vm->generation = new_vm_generation;
 		amdgpu_vm_bo_reset_state_machine(vm);
@@ -1608,6 +1608,17 @@ int amdgpu_vm_handle_moved(struct amdgpu_device *adev,
 	while (!list_empty(&vm->invalidated)) {
 		bo_va = list_first_entry(&vm->invalidated, struct amdgpu_bo_va,
 					 base.vm_status);
+
+		/* bo_va->base.bo is NULL only when bo_va is a prt_va */
+		if (!bo_va->base.bo) {
+			spin_unlock(&vm->status_lock);
+			r = amdgpu_vm_bo_update(adev, bo_va, false);
+			if (r)
+				return r;
+			spin_lock(&vm->status_lock);
+			continue;
+		}
+
 		resv = bo_va->base.bo->tbo.base.resv;
 		spin_unlock(&vm->status_lock);
 
-- 
2.43.0



More information about the amd-gfx mailing list