drm/kfd: Correct pinned buffer handling at kfd restore and validate process
authorjsg <jsg@openbsd.org>
Mon, 9 Sep 2024 09:41:07 +0000 (09:41 +0000)
committerjsg <jsg@openbsd.org>
Mon, 9 Sep 2024 09:41:07 +0000 (09:41 +0000)
From Xiaogang Chen
cdc65b5f99988f9679908cdc5204dd183260bed9 in linux-6.6.y/6.6.50
f326d7cc745683f53052b84382bd10567b45cd5d in mainline linux

sys/dev/pci/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

index 7f90461..dd4d080 100644 (file)
@@ -407,6 +407,10 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,
                 "Called with userptr BO"))
                return -EINVAL;
 
+       /* bo has been pinned, not need validate it */
+       if (bo->tbo.pin_count)
+               return 0;
+
        amdgpu_bo_placement_from_domain(bo, domain);
 
        ret = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
@@ -2631,7 +2635,7 @@ static int confirm_valid_user_pages_locked(struct amdkfd_process_info *process_i
 
                /* keep mem without hmm range at userptr_inval_list */
                if (!mem->range)
-                        continue;
+                       continue;
 
                /* Only check mem with hmm range associated */
                valid = amdgpu_ttm_tt_get_user_pages_done(
@@ -2848,9 +2852,6 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)
                        if (!attachment->is_mapped)
                                continue;
 
-                       if (attachment->bo_va->base.bo->tbo.pin_count)
-                               continue;
-
                        kfd_mem_dmaunmap_attachment(mem, attachment);
                        ret = update_gpuvm_pte(mem, attachment, &sync_obj);
                        if (ret) {