[PATCH 5/6] drm/amdgpu: Auto-validate DMABuf imports in compute VMs
kernel test robot
lkp at intel.com
Tue Dec 5 13:32:52 UTC 2023
Hi Felix,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20231201]
[cannot apply to drm-misc/drm-misc-next drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.7-rc3 v6.7-rc2 v6.7-rc1 v6.7-rc4]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Felix-Kuehling/drm-amdkfd-Export-DMABufs-from-KFD-using-GEM-handles/20231202-073833
base: next-20231201
patch link: https://lore.kernel.org/r/20231201233438.1709981-5-Felix.Kuehling%40amd.com
patch subject: [PATCH 5/6] drm/amdgpu: Auto-validate DMABuf imports in compute VMs
config: x86_64-randconfig-161-20231203 (https://download.01.org/0day-ci/archive/20231205/202312052136.JfzEpgBw-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231205/202312052136.JfzEpgBw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312052136.JfzEpgBw-lkp@intel.com/
All errors (new ones prefixed by >>):
ld: drivers/gpu/drm/amd/amdgpu/amdgpu_gem.o: in function `amdgpu_gem_object_open':
>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c:208: undefined reference to `amdgpu_amdkfd_bo_validate_and_fence'
vim +208 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
156
157 /*
158 * Call from drm_gem_handle_create which appear in both new and open ioctl
159 * case.
160 */
161 static int amdgpu_gem_object_open(struct drm_gem_object *obj,
162 struct drm_file *file_priv)
163 {
164 struct amdgpu_bo *abo = gem_to_amdgpu_bo(obj);
165 struct amdgpu_device *adev = amdgpu_ttm_adev(abo->tbo.bdev);
166 struct amdgpu_fpriv *fpriv = file_priv->driver_priv;
167 struct amdgpu_vm *vm = &fpriv->vm;
168 struct amdgpu_bo_va *bo_va;
169 struct mm_struct *mm;
170 int r;
171
172 mm = amdgpu_ttm_tt_get_usermm(abo->tbo.ttm);
173 if (mm && mm != current->mm)
174 return -EPERM;
175
176 if (abo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID &&
177 abo->tbo.base.resv != vm->root.bo->tbo.base.resv)
178 return -EPERM;
179
180 r = amdgpu_bo_reserve(abo, false);
181 if (r)
182 return r;
183
184 bo_va = amdgpu_vm_bo_find(vm, abo);
185 if (!bo_va)
186 bo_va = amdgpu_vm_bo_add(adev, vm, abo);
187 else
188 ++bo_va->ref_count;
189 amdgpu_bo_unreserve(abo);
190
191 /* Validate and add eviction fence to DMABuf imports with dynamic
192 * attachment in compute VMs. Re-validation will be done by
193 * amdgpu_vm_validate_evicted_bos and the fence will be updated by
194 * amdgpu_vm_fence_imports in amdgpu_amdkfd_gpuvm_restore_process_bos.
195 *
196 * Nested locking below for the case that a GEM object is opened in
197 * kfd_mem_export_dmabuf. Since the lock below is only taken for imports,
198 * but not for export, this is a different lock class that cannot lead to
199 * circular lock dependencies.
200 */
201 if (!vm->is_compute_context || !vm->process_info)
202 return 0;
203 if (!obj->import_attach ||
204 !dma_buf_is_dynamic(obj->import_attach->dmabuf))
205 return 0;
206 mutex_lock_nested(&vm->process_info->lock, 1);
207 if (!WARN_ON(!vm->process_info->eviction_fence)) {
> 208 r = amdgpu_amdkfd_bo_validate_and_fence(abo, AMDGPU_GEM_DOMAIN_GTT,
209 &vm->process_info->eviction_fence->base);
210 if (r)
211 dev_warn(adev->dev, "%d: validate_and_fence failed: %d\n",
212 vm->task_info.pid, r);
213 }
214 mutex_unlock(&vm->process_info->lock);
215
216 return 0;
217 }
218
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the amd-gfx
mailing list