Lines Matching refs:process_info

1005 				struct amdkfd_process_info *process_info,  in add_kgd_mem_to_kfd_bo_list()  argument
1008 mutex_lock(&process_info->lock); in add_kgd_mem_to_kfd_bo_list()
1011 &process_info->userptr_valid_list); in add_kgd_mem_to_kfd_bo_list()
1013 list_add_tail(&mem->validate_list, &process_info->kfd_bo_list); in add_kgd_mem_to_kfd_bo_list()
1014 mutex_unlock(&process_info->lock); in add_kgd_mem_to_kfd_bo_list()
1018 struct amdkfd_process_info *process_info) in remove_kgd_mem_from_kfd_bo_list() argument
1020 mutex_lock(&process_info->lock); in remove_kgd_mem_from_kfd_bo_list()
1022 mutex_unlock(&process_info->lock); in remove_kgd_mem_from_kfd_bo_list()
1040 struct amdkfd_process_info *process_info = mem->process_info; in init_user_pages() local
1046 mutex_lock(&process_info->lock); in init_user_pages()
1068 mutex_lock(&process_info->notifier_lock); in init_user_pages()
1070 mutex_unlock(&process_info->notifier_lock); in init_user_pages()
1071 mutex_unlock(&process_info->lock); in init_user_pages()
1101 mutex_unlock(&process_info->lock); in init_user_pages()
1313 static int process_validate_vms(struct amdkfd_process_info *process_info, in process_validate_vms() argument
1319 list_for_each_entry(peer_vm, &process_info->vm_list_head, in process_validate_vms()
1329 static int process_sync_pds_resv(struct amdkfd_process_info *process_info, in process_sync_pds_resv() argument
1335 list_for_each_entry(peer_vm, &process_info->vm_list_head, in process_sync_pds_resv()
1349 static int process_update_pds(struct amdkfd_process_info *process_info, in process_update_pds() argument
1355 list_for_each_entry(peer_vm, &process_info->vm_list_head, in process_update_pds()
1365 static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info, in init_kfd_vm() argument
1371 if (!*process_info) { in init_kfd_vm()
1397 *process_info = info; in init_kfd_vm()
1400 vm->process_info = *process_info; in init_kfd_vm()
1419 &vm->process_info->eviction_fence->base, in init_kfd_vm()
1424 mutex_lock(&vm->process_info->lock); in init_kfd_vm()
1426 &(vm->process_info->vm_list_head)); in init_kfd_vm()
1427 vm->process_info->n_vms++; in init_kfd_vm()
1429 *ef = dma_fence_get(&vm->process_info->eviction_fence->base); in init_kfd_vm()
1430 mutex_unlock(&vm->process_info->lock); in init_kfd_vm()
1439 vm->process_info = NULL; in init_kfd_vm()
1442 *process_info = NULL; in init_kfd_vm()
1520 void **process_info, in amdgpu_amdkfd_gpuvm_acquire_process_vm() argument
1526 if (avm->process_info) in amdgpu_amdkfd_gpuvm_acquire_process_vm()
1535 ret = init_kfd_vm(avm, process_info, ef); in amdgpu_amdkfd_gpuvm_acquire_process_vm()
1547 struct amdkfd_process_info *process_info = vm->process_info; in amdgpu_amdkfd_gpuvm_destroy_cb() local
1549 if (!process_info) in amdgpu_amdkfd_gpuvm_destroy_cb()
1553 mutex_lock(&process_info->lock); in amdgpu_amdkfd_gpuvm_destroy_cb()
1554 process_info->n_vms--; in amdgpu_amdkfd_gpuvm_destroy_cb()
1556 mutex_unlock(&process_info->lock); in amdgpu_amdkfd_gpuvm_destroy_cb()
1558 vm->process_info = NULL; in amdgpu_amdkfd_gpuvm_destroy_cb()
1561 if (!process_info->n_vms) { in amdgpu_amdkfd_gpuvm_destroy_cb()
1562 WARN_ON(!list_empty(&process_info->kfd_bo_list)); in amdgpu_amdkfd_gpuvm_destroy_cb()
1563 WARN_ON(!list_empty(&process_info->userptr_valid_list)); in amdgpu_amdkfd_gpuvm_destroy_cb()
1564 WARN_ON(!list_empty(&process_info->userptr_inval_list)); in amdgpu_amdkfd_gpuvm_destroy_cb()
1566 dma_fence_put(&process_info->eviction_fence->base); in amdgpu_amdkfd_gpuvm_destroy_cb()
1567 cancel_delayed_work_sync(&process_info->restore_userptr_work); in amdgpu_amdkfd_gpuvm_destroy_cb()
1568 put_pid(process_info->pid); in amdgpu_amdkfd_gpuvm_destroy_cb()
1569 mutex_destroy(&process_info->lock); in amdgpu_amdkfd_gpuvm_destroy_cb()
1570 mutex_destroy(&process_info->notifier_lock); in amdgpu_amdkfd_gpuvm_destroy_cb()
1571 kfree(process_info); in amdgpu_amdkfd_gpuvm_destroy_cb()
1790 (*mem)->process_info = avm->process_info; in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1792 add_kgd_mem_to_kfd_bo_list(*mem, avm->process_info, user_addr); in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1809 mutex_lock(&avm->process_info->lock); in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1810 if (avm->process_info->eviction_fence && in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1811 !dma_fence_is_signaled(&avm->process_info->eviction_fence->base)) in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1813 &avm->process_info->eviction_fence->base); in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1814 mutex_unlock(&avm->process_info->lock); in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1827 remove_kgd_mem_from_kfd_bo_list(*mem, avm->process_info); in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()
1855 struct amdkfd_process_info *process_info = mem->process_info; in amdgpu_amdkfd_gpuvm_free_memory_of_gpu() local
1887 mutex_lock(&process_info->lock); in amdgpu_amdkfd_gpuvm_free_memory_of_gpu()
1889 mutex_unlock(&process_info->lock); in amdgpu_amdkfd_gpuvm_free_memory_of_gpu()
1894 mutex_lock(&process_info->notifier_lock); in amdgpu_amdkfd_gpuvm_free_memory_of_gpu()
1896 mutex_unlock(&process_info->notifier_lock); in amdgpu_amdkfd_gpuvm_free_memory_of_gpu()
1904 process_info->eviction_fence); in amdgpu_amdkfd_gpuvm_free_memory_of_gpu()
1989 mutex_lock(&mem->process_info->lock); in amdgpu_amdkfd_gpuvm_map_memory_to_gpu()
1996 mutex_lock(&mem->process_info->notifier_lock); in amdgpu_amdkfd_gpuvm_map_memory_to_gpu()
1998 mutex_unlock(&mem->process_info->notifier_lock); in amdgpu_amdkfd_gpuvm_map_memory_to_gpu()
2067 mutex_unlock(&mem->process_info->lock); in amdgpu_amdkfd_gpuvm_map_memory_to_gpu()
2205 bo, bo->vm_bo->vm->process_info->eviction_fence); in amdgpu_amdkfd_map_gtt_bo_to_gart()
2246 mutex_lock(&mem->process_info->lock); in amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel()
2267 bo, mem->process_info->eviction_fence); in amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel()
2274 mutex_unlock(&mem->process_info->lock); in amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel()
2282 mutex_unlock(&mem->process_info->lock); in amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel()
2365 (*mem)->process_info = avm->process_info; in import_obj_create()
2366 add_kgd_mem_to_kfd_bo_list(*mem, avm->process_info, false); in import_obj_create()
2370 mutex_lock(&avm->process_info->lock); in import_obj_create()
2371 if (avm->process_info->eviction_fence && in import_obj_create()
2372 !dma_fence_is_signaled(&avm->process_info->eviction_fence->base)) in import_obj_create()
2374 &avm->process_info->eviction_fence->base); in import_obj_create()
2375 mutex_unlock(&avm->process_info->lock); in import_obj_create()
2382 remove_kgd_mem_from_kfd_bo_list(*mem, avm->process_info); in import_obj_create()
2454 struct amdkfd_process_info *process_info = mem->process_info; in amdgpu_amdkfd_evict_userptr() local
2460 if (READ_ONCE(process_info->block_mmu_notifications)) in amdgpu_amdkfd_evict_userptr()
2463 mutex_lock(&process_info->notifier_lock); in amdgpu_amdkfd_evict_userptr()
2467 if (++process_info->evicted_bos == 1) { in amdgpu_amdkfd_evict_userptr()
2477 &process_info->restore_userptr_work, in amdgpu_amdkfd_evict_userptr()
2480 mutex_unlock(&process_info->notifier_lock); in amdgpu_amdkfd_evict_userptr()
2491 static int update_invalid_user_pages(struct amdkfd_process_info *process_info, in update_invalid_user_pages() argument
2500 mutex_lock(&process_info->notifier_lock); in update_invalid_user_pages()
2504 &process_info->userptr_valid_list, in update_invalid_user_pages()
2508 &process_info->userptr_inval_list); in update_invalid_user_pages()
2511 list_for_each_entry(mem, &process_info->userptr_inval_list, in update_invalid_user_pages()
2528 mutex_unlock(&process_info->notifier_lock); in update_invalid_user_pages()
2567 pid_nr(process_info->pid), mem->va); in update_invalid_user_pages()
2570 kfd_signal_vm_fault_event_with_userptr(kfd_lookup_process_by_pid(process_info->pid), in update_invalid_user_pages()
2577 mutex_lock(&process_info->notifier_lock); in update_invalid_user_pages()
2592 mutex_unlock(&process_info->notifier_lock); in update_invalid_user_pages()
2602 static int validate_invalid_user_pages(struct amdkfd_process_info *process_info) in validate_invalid_user_pages() argument
2619 list_for_each_entry(peer_vm, &process_info->vm_list_head, in validate_invalid_user_pages()
2628 list_for_each_entry(mem, &process_info->userptr_inval_list, in validate_invalid_user_pages()
2640 ret = process_validate_vms(process_info, NULL); in validate_invalid_user_pages()
2646 &process_info->userptr_inval_list, in validate_invalid_user_pages()
2677 mutex_lock(&process_info->notifier_lock); in validate_invalid_user_pages()
2679 mutex_unlock(&process_info->notifier_lock); in validate_invalid_user_pages()
2686 ret = process_update_pds(process_info, &sync); in validate_invalid_user_pages()
2700 static int confirm_valid_user_pages_locked(struct amdkfd_process_info *process_info) in confirm_valid_user_pages_locked() argument
2706 &process_info->userptr_inval_list, in confirm_valid_user_pages_locked()
2732 &process_info->userptr_valid_list); in confirm_valid_user_pages_locked()
2747 struct amdkfd_process_info *process_info = in amdgpu_amdkfd_restore_userptr_worker() local
2754 mutex_lock(&process_info->notifier_lock); in amdgpu_amdkfd_restore_userptr_worker()
2755 evicted_bos = process_info->evicted_bos; in amdgpu_amdkfd_restore_userptr_worker()
2756 mutex_unlock(&process_info->notifier_lock); in amdgpu_amdkfd_restore_userptr_worker()
2761 usertask = get_pid_task(process_info->pid, PIDTYPE_PID); in amdgpu_amdkfd_restore_userptr_worker()
2770 mutex_lock(&process_info->lock); in amdgpu_amdkfd_restore_userptr_worker()
2772 if (update_invalid_user_pages(process_info, mm)) in amdgpu_amdkfd_restore_userptr_worker()
2778 if (!list_empty(&process_info->userptr_inval_list)) { in amdgpu_amdkfd_restore_userptr_worker()
2779 if (validate_invalid_user_pages(process_info)) in amdgpu_amdkfd_restore_userptr_worker()
2787 mutex_lock(&process_info->notifier_lock); in amdgpu_amdkfd_restore_userptr_worker()
2788 if (process_info->evicted_bos != evicted_bos) in amdgpu_amdkfd_restore_userptr_worker()
2791 if (confirm_valid_user_pages_locked(process_info)) { in amdgpu_amdkfd_restore_userptr_worker()
2796 process_info->evicted_bos = evicted_bos = 0; in amdgpu_amdkfd_restore_userptr_worker()
2806 mutex_unlock(&process_info->notifier_lock); in amdgpu_amdkfd_restore_userptr_worker()
2808 mutex_unlock(&process_info->lock); in amdgpu_amdkfd_restore_userptr_worker()
2813 &process_info->restore_userptr_work, in amdgpu_amdkfd_restore_userptr_worker()
2859 struct amdkfd_process_info *process_info = info; in amdgpu_amdkfd_gpuvm_restore_process_bos() local
2871 mutex_lock(&process_info->lock); in amdgpu_amdkfd_gpuvm_restore_process_bos()
2875 list_for_each_entry(peer_vm, &process_info->vm_list_head, in amdgpu_amdkfd_gpuvm_restore_process_bos()
2888 list_for_each_entry(mem, &process_info->kfd_bo_list, in amdgpu_amdkfd_gpuvm_restore_process_bos()
2905 list_for_each_entry(mem, &process_info->kfd_bo_list, in amdgpu_amdkfd_gpuvm_restore_process_bos()
2942 ret = process_validate_vms(process_info, &exec.ticket); in amdgpu_amdkfd_gpuvm_restore_process_bos()
2949 list_for_each_entry(mem, &process_info->kfd_bo_list, in amdgpu_amdkfd_gpuvm_restore_process_bos()
2967 list_for_each_entry(peer_vm, &process_info->vm_list_head, in amdgpu_amdkfd_gpuvm_restore_process_bos()
2980 ret = process_update_pds(process_info, &sync_obj); in amdgpu_amdkfd_gpuvm_restore_process_bos()
2989 ret = process_sync_pds_resv(process_info, &sync_obj); in amdgpu_amdkfd_gpuvm_restore_process_bos()
3008 if (dma_fence_is_signaled(&process_info->eviction_fence->base)) { in amdgpu_amdkfd_gpuvm_restore_process_bos()
3011 process_info->eviction_fence->base.context, in amdgpu_amdkfd_gpuvm_restore_process_bos()
3012 process_info->eviction_fence->mm, in amdgpu_amdkfd_gpuvm_restore_process_bos()
3020 dma_fence_put(&process_info->eviction_fence->base); in amdgpu_amdkfd_gpuvm_restore_process_bos()
3021 process_info->eviction_fence = new_fence; in amdgpu_amdkfd_gpuvm_restore_process_bos()
3024 WARN_ONCE(*ef != &process_info->eviction_fence->base, in amdgpu_amdkfd_gpuvm_restore_process_bos()
3029 list_for_each_entry(mem, &process_info->kfd_bo_list, validate_list) { in amdgpu_amdkfd_gpuvm_restore_process_bos()
3034 &process_info->eviction_fence->base, in amdgpu_amdkfd_gpuvm_restore_process_bos()
3038 list_for_each_entry(peer_vm, &process_info->vm_list_head, in amdgpu_amdkfd_gpuvm_restore_process_bos()
3043 &process_info->eviction_fence->base, in amdgpu_amdkfd_gpuvm_restore_process_bos()
3051 mutex_unlock(&process_info->lock); in amdgpu_amdkfd_gpuvm_restore_process_bos()
3057 struct amdkfd_process_info *process_info = (struct amdkfd_process_info *)info; in amdgpu_amdkfd_add_gws_to_process() local
3072 (*mem)->process_info = process_info; in amdgpu_amdkfd_add_gws_to_process()
3073 add_kgd_mem_to_kfd_bo_list(*mem, process_info, false); in amdgpu_amdkfd_add_gws_to_process()
3078 mutex_lock(&(*mem)->process_info->lock); in amdgpu_amdkfd_add_gws_to_process()
3098 &process_info->eviction_fence->base, in amdgpu_amdkfd_add_gws_to_process()
3101 mutex_unlock(&(*mem)->process_info->lock); in amdgpu_amdkfd_add_gws_to_process()
3109 mutex_unlock(&(*mem)->process_info->lock); in amdgpu_amdkfd_add_gws_to_process()
3111 remove_kgd_mem_from_kfd_bo_list(*mem, process_info); in amdgpu_amdkfd_add_gws_to_process()
3122 struct amdkfd_process_info *process_info = (struct amdkfd_process_info *)info; in amdgpu_amdkfd_remove_gws_from_process() local
3129 remove_kgd_mem_from_kfd_bo_list(kgd_mem, process_info); in amdgpu_amdkfd_remove_gws_from_process()
3138 process_info->eviction_fence); in amdgpu_amdkfd_remove_gws_from_process()