Lines Matching refs:p
56 struct kfd_process *p; member
145 struct kfd_process *p; in find_process() local
149 p = find_process_by_mm(thread->mm); in find_process()
152 return p; in find_process()
159 struct kfd_process *p; in kfd_process_wq_release() local
163 p = my_work->p; in kfd_process_wq_release()
166 p->pasid); in kfd_process_wq_release()
168 mutex_lock(&p->mutex); in kfd_process_wq_release()
170 list_for_each_entry_safe(pdd, temp, &p->per_device_data, in kfd_process_wq_release()
173 pdd->dev->id, p->pasid); in kfd_process_wq_release()
175 amd_iommu_unbind_pasid(pdd->dev->pdev, p->pasid); in kfd_process_wq_release()
181 kfd_pasid_free(p->pasid); in kfd_process_wq_release()
183 mutex_unlock(&p->mutex); in kfd_process_wq_release()
185 mutex_destroy(&p->mutex); in kfd_process_wq_release()
187 kfree(p->queues); in kfd_process_wq_release()
189 kfree(p); in kfd_process_wq_release()
197 struct kfd_process *p; in kfd_process_destroy_delayed() local
201 p = container_of(rcu, struct kfd_process, rcu); in kfd_process_destroy_delayed()
202 BUG_ON(atomic_read(&p->mm->mm_count) <= 0); in kfd_process_destroy_delayed()
204 mmdrop(p->mm); in kfd_process_destroy_delayed()
211 work->p = p; in kfd_process_destroy_delayed()
219 struct kfd_process *p; in kfd_process_notifier_release() local
225 p = container_of(mn, struct kfd_process, mmu_notifier); in kfd_process_notifier_release()
226 BUG_ON(p->mm != mm); in kfd_process_notifier_release()
229 hash_del_rcu(&p->kfd_processes); in kfd_process_notifier_release()
233 mutex_lock(&p->mutex); in kfd_process_notifier_release()
236 pqm_uninit(&p->pqm); in kfd_process_notifier_release()
238 mutex_unlock(&p->mutex); in kfd_process_notifier_release()
245 atomic_inc(&p->mm->mm_count); in kfd_process_notifier_release()
246 mmu_notifier_unregister_no_release(&p->mmu_notifier, p->mm); in kfd_process_notifier_release()
247 mmu_notifier_call_srcu(&p->rcu, &kfd_process_destroy_delayed); in kfd_process_notifier_release()
320 struct kfd_process *p) in kfd_get_process_device_data() argument
324 list_for_each_entry(pdd, &p->per_device_data, per_device_list) in kfd_get_process_device_data()
332 struct kfd_process *p) in kfd_create_process_device_data() argument
342 list_add(&pdd->per_device_list, &p->per_device_data); in kfd_create_process_device_data()
356 struct kfd_process *p) in kfd_bind_process_to_device() argument
361 pdd = kfd_get_process_device_data(dev, p); in kfd_bind_process_to_device()
370 err = amd_iommu_bind_pasid(dev->pdev, p->pasid, p->lead_thread); in kfd_bind_process_to_device()
381 struct kfd_process *p; in kfd_unbind_process_from_device() local
389 hash_for_each_rcu(kfd_processes_table, i, p, kfd_processes) in kfd_unbind_process_from_device()
390 if (p->pasid == pasid) in kfd_unbind_process_from_device()
395 BUG_ON(p->pasid != pasid); in kfd_unbind_process_from_device()
397 mutex_lock(&p->mutex); in kfd_unbind_process_from_device()
399 pqm_uninit(&p->pqm); in kfd_unbind_process_from_device()
401 pdd = kfd_get_process_device_data(dev, p); in kfd_unbind_process_from_device()
412 mutex_unlock(&p->mutex); in kfd_unbind_process_from_device()
415 struct kfd_process_device *kfd_get_first_process_device_data(struct kfd_process *p) in kfd_get_first_process_device_data() argument
417 return list_first_entry(&p->per_device_data, in kfd_get_first_process_device_data()
422 struct kfd_process_device *kfd_get_next_process_device_data(struct kfd_process *p, in kfd_get_next_process_device_data() argument
425 if (list_is_last(&pdd->per_device_list, &p->per_device_data)) in kfd_get_next_process_device_data()
430 bool kfd_has_process_device_data(struct kfd_process *p) in kfd_has_process_device_data() argument
432 return !(list_empty(&p->per_device_data)); in kfd_has_process_device_data()