Lines Matching refs:p
57 struct kfd_process *p; member
146 struct kfd_process *p; in find_process() local
150 p = find_process_by_mm(thread->mm); in find_process()
153 return p; in find_process()
160 struct kfd_process *p; in kfd_process_wq_release() local
164 p = my_work->p; in kfd_process_wq_release()
167 p->pasid); in kfd_process_wq_release()
169 mutex_lock(&p->mutex); in kfd_process_wq_release()
171 list_for_each_entry_safe(pdd, temp, &p->per_device_data, in kfd_process_wq_release()
174 pdd->dev->id, p->pasid); in kfd_process_wq_release()
177 dbgdev_wave_reset_wavefronts(pdd->dev, p); in kfd_process_wq_release()
179 amd_iommu_unbind_pasid(pdd->dev->pdev, p->pasid); in kfd_process_wq_release()
185 kfd_event_free_process(p); in kfd_process_wq_release()
187 kfd_pasid_free(p->pasid); in kfd_process_wq_release()
189 mutex_unlock(&p->mutex); in kfd_process_wq_release()
191 mutex_destroy(&p->mutex); in kfd_process_wq_release()
193 kfree(p->queues); in kfd_process_wq_release()
195 kfree(p); in kfd_process_wq_release()
203 struct kfd_process *p; in kfd_process_destroy_delayed() local
207 p = container_of(rcu, struct kfd_process, rcu); in kfd_process_destroy_delayed()
208 BUG_ON(atomic_read(&p->mm->mm_count) <= 0); in kfd_process_destroy_delayed()
210 mmdrop(p->mm); in kfd_process_destroy_delayed()
216 work->p = p; in kfd_process_destroy_delayed()
224 struct kfd_process *p; in kfd_process_notifier_release() local
231 p = container_of(mn, struct kfd_process, mmu_notifier); in kfd_process_notifier_release()
232 BUG_ON(p->mm != mm); in kfd_process_notifier_release()
235 hash_del_rcu(&p->kfd_processes); in kfd_process_notifier_release()
239 mutex_lock(&p->mutex); in kfd_process_notifier_release()
242 pqm_uninit(&p->pqm); in kfd_process_notifier_release()
246 list_for_each_entry(pdd, &p->per_device_data, per_device_list) in kfd_process_notifier_release()
249 dbgdev_wave_reset_wavefronts(pdd->dev, p); in kfd_process_notifier_release()
253 mutex_unlock(&p->mutex); in kfd_process_notifier_release()
260 atomic_inc(&p->mm->mm_count); in kfd_process_notifier_release()
261 mmu_notifier_unregister_no_release(&p->mmu_notifier, p->mm); in kfd_process_notifier_release()
262 mmu_notifier_call_srcu(&p->rcu, &kfd_process_destroy_delayed); in kfd_process_notifier_release()
337 struct kfd_process *p) in kfd_get_process_device_data() argument
341 list_for_each_entry(pdd, &p->per_device_data, per_device_list) in kfd_get_process_device_data()
349 struct kfd_process *p) in kfd_create_process_device_data() argument
360 list_add(&pdd->per_device_list, &p->per_device_data); in kfd_create_process_device_data()
374 struct kfd_process *p) in kfd_bind_process_to_device() argument
379 pdd = kfd_get_process_device_data(dev, p); in kfd_bind_process_to_device()
388 err = amd_iommu_bind_pasid(dev->pdev, p->pasid, p->lead_thread); in kfd_bind_process_to_device()
399 struct kfd_process *p; in kfd_unbind_process_from_device() local
407 hash_for_each_rcu(kfd_processes_table, i, p, kfd_processes) in kfd_unbind_process_from_device()
408 if (p->pasid == pasid) in kfd_unbind_process_from_device()
413 BUG_ON(p->pasid != pasid); in kfd_unbind_process_from_device()
415 mutex_lock(&p->mutex); in kfd_unbind_process_from_device()
417 if ((dev->dbgmgr) && (dev->dbgmgr->pasid == p->pasid)) in kfd_unbind_process_from_device()
420 pqm_uninit(&p->pqm); in kfd_unbind_process_from_device()
422 pdd = kfd_get_process_device_data(dev, p); in kfd_unbind_process_from_device()
425 mutex_unlock(&p->mutex); in kfd_unbind_process_from_device()
430 dbgdev_wave_reset_wavefronts(pdd->dev, p); in kfd_unbind_process_from_device()
442 mutex_unlock(&p->mutex); in kfd_unbind_process_from_device()
445 struct kfd_process_device *kfd_get_first_process_device_data(struct kfd_process *p) in kfd_get_first_process_device_data() argument
447 return list_first_entry(&p->per_device_data, in kfd_get_first_process_device_data()
452 struct kfd_process_device *kfd_get_next_process_device_data(struct kfd_process *p, in kfd_get_next_process_device_data() argument
455 if (list_is_last(&pdd->per_device_list, &p->per_device_data)) in kfd_get_next_process_device_data()
460 bool kfd_has_process_device_data(struct kfd_process *p) in kfd_has_process_device_data() argument
462 return !(list_empty(&p->per_device_data)); in kfd_has_process_device_data()
468 struct kfd_process *p; in kfd_lookup_process_by_pasid() local
473 hash_for_each_rcu(kfd_processes_table, temp, p, kfd_processes) { in kfd_lookup_process_by_pasid()
474 if (p->pasid == pasid) { in kfd_lookup_process_by_pasid()
475 mutex_lock(&p->mutex); in kfd_lookup_process_by_pasid()
482 return p; in kfd_lookup_process_by_pasid()