[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