Lines Matching refs:fault_param

24 	struct iommu_fault_param *fault_param;  in iopf_get_dev_fault_param()  local
27 fault_param = rcu_dereference(param->fault_param); in iopf_get_dev_fault_param()
28 if (fault_param && !refcount_inc_not_zero(&fault_param->users)) in iopf_get_dev_fault_param()
29 fault_param = NULL; in iopf_get_dev_fault_param()
32 return fault_param; in iopf_get_dev_fault_param()
36 static void iopf_put_dev_fault_param(struct iommu_fault_param *fault_param) in iopf_put_dev_fault_param() argument
38 if (refcount_dec_and_test(&fault_param->users)) in iopf_put_dev_fault_param()
39 kfree_rcu(fault_param, rcu); in iopf_put_dev_fault_param()
52 iopf_put_dev_fault_param(group->fault_param); in __iopf_free_group()
63 static int report_partial_fault(struct iommu_fault_param *fault_param, in report_partial_fault() argument
74 mutex_lock(&fault_param->lock); in report_partial_fault()
75 list_add(&iopf->list, &fault_param->partial); in report_partial_fault()
76 mutex_unlock(&fault_param->lock); in report_partial_fault()
97 group->fault_param = iopf_param; in iopf_group_alloc()
307 iopf_param = rcu_dereference_check(dev->iommu->fault_param, true); in iopf_queue_flush_dev()
325 struct iommu_fault_param *fault_param = group->fault_param; in iopf_group_response() local
327 struct device *dev = group->fault_param->dev; in iopf_group_response()
336 mutex_lock(&fault_param->lock); in iopf_group_response()
341 mutex_unlock(&fault_param->lock); in iopf_group_response()
389 struct iommu_fault_param *fault_param; in iopf_queue_add_device() local
397 if (rcu_dereference_check(param->fault_param, in iopf_queue_add_device()
403 fault_param = kzalloc(sizeof(*fault_param), GFP_KERNEL); in iopf_queue_add_device()
404 if (!fault_param) { in iopf_queue_add_device()
409 mutex_init(&fault_param->lock); in iopf_queue_add_device()
410 INIT_LIST_HEAD(&fault_param->faults); in iopf_queue_add_device()
411 INIT_LIST_HEAD(&fault_param->partial); in iopf_queue_add_device()
412 fault_param->dev = dev; in iopf_queue_add_device()
413 refcount_set(&fault_param->users, 1); in iopf_queue_add_device()
414 list_add(&fault_param->queue_list, &queue->devices); in iopf_queue_add_device()
415 fault_param->queue = queue; in iopf_queue_add_device()
417 rcu_assign_pointer(param->fault_param, fault_param); in iopf_queue_add_device()
456 struct iommu_fault_param *fault_param; in iopf_queue_remove_device() local
461 fault_param = rcu_dereference_check(param->fault_param, in iopf_queue_remove_device()
464 if (WARN_ON(!fault_param || fault_param->queue != queue)) in iopf_queue_remove_device()
467 mutex_lock(&fault_param->lock); in iopf_queue_remove_device()
468 list_for_each_entry_safe(partial_iopf, next, &fault_param->partial, list) in iopf_queue_remove_device()
471 list_for_each_entry_safe(group, temp, &fault_param->faults, pending_node) { in iopf_queue_remove_device()
483 mutex_unlock(&fault_param->lock); in iopf_queue_remove_device()
485 list_del(&fault_param->queue_list); in iopf_queue_remove_device()
488 rcu_assign_pointer(param->fault_param, NULL); in iopf_queue_remove_device()
489 iopf_put_dev_fault_param(fault_param); in iopf_queue_remove_device()