Lines Matching refs:uverbs_dev

987 				 struct ib_uverbs_device *uverbs_dev)  in ib_uverbs_create_uapi()  argument
995 uverbs_dev->uapi = uapi; in ib_uverbs_create_uapi()
1042 struct ib_uverbs_device *uverbs_dev; in ib_uverbs_add_one() local
1048 uverbs_dev = kzalloc(sizeof(*uverbs_dev), GFP_KERNEL); in ib_uverbs_add_one()
1049 if (!uverbs_dev) in ib_uverbs_add_one()
1052 ret = init_srcu_struct(&uverbs_dev->disassociate_srcu); in ib_uverbs_add_one()
1054 kfree(uverbs_dev); in ib_uverbs_add_one()
1058 uverbs_dev->dev.class = uverbs_class; in ib_uverbs_add_one()
1059 uverbs_dev->dev.parent = device->dev.parent; in ib_uverbs_add_one()
1060 uverbs_dev->dev.release = ib_uverbs_release_dev; in ib_uverbs_add_one()
1061 device_initialize(&uverbs_dev->dev); in ib_uverbs_add_one()
1062 atomic_set(&uverbs_dev->refcount, 1); in ib_uverbs_add_one()
1063 init_completion(&uverbs_dev->comp); in ib_uverbs_add_one()
1064 uverbs_dev->xrcd_tree = RB_ROOT; in ib_uverbs_add_one()
1065 mutex_init(&uverbs_dev->xrcd_tree_mutex); in ib_uverbs_add_one()
1066 mutex_init(&uverbs_dev->lists_mutex); in ib_uverbs_add_one()
1067 INIT_LIST_HEAD(&uverbs_dev->uverbs_file_list); in ib_uverbs_add_one()
1068 rcu_assign_pointer(uverbs_dev->ib_dev, device); in ib_uverbs_add_one()
1069 uverbs_dev->num_comp_vectors = device->num_comp_vectors; in ib_uverbs_add_one()
1075 uverbs_dev->devnum = devnum; in ib_uverbs_add_one()
1081 if (ib_uverbs_create_uapi(device, uverbs_dev)) in ib_uverbs_add_one()
1084 uverbs_dev->dev.devt = base; in ib_uverbs_add_one()
1085 dev_set_name(&uverbs_dev->dev, "uverbs%d", uverbs_dev->devnum); in ib_uverbs_add_one()
1087 cdev_init(&uverbs_dev->cdev, in ib_uverbs_add_one()
1089 uverbs_dev->cdev.owner = THIS_MODULE; in ib_uverbs_add_one()
1091 kobject_set_name(&uverbs_dev->cdev.kobj, "uverbs%d", uverbs_dev->devnum); in ib_uverbs_add_one()
1092 ret = cdev_device_add(&uverbs_dev->cdev, &uverbs_dev->dev); in ib_uverbs_add_one()
1096 if (device_create_file(&uverbs_dev->dev, &dev_attr_ibdev)) in ib_uverbs_add_one()
1098 if (device_create_file(&uverbs_dev->dev, &dev_attr_abi_version)) in ib_uverbs_add_one()
1100 if (sysfs_create_group(&uverbs_dev->dev.kobj, &dev_attr_group)) in ib_uverbs_add_one()
1103 ib_set_client_data(device, &uverbs_client, uverbs_dev); in ib_uverbs_add_one()
1107 cdev_device_del(&uverbs_dev->cdev, &uverbs_dev->dev); in ib_uverbs_add_one()
1111 if (atomic_dec_and_test(&uverbs_dev->refcount)) in ib_uverbs_add_one()
1112 ib_uverbs_comp_dev(uverbs_dev); in ib_uverbs_add_one()
1113 wait_for_completion(&uverbs_dev->comp); in ib_uverbs_add_one()
1114 put_device(&uverbs_dev->dev); in ib_uverbs_add_one()
1118 static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev, in ib_uverbs_free_hw_resources() argument
1124 uverbs_disassociate_api_pre(uverbs_dev); in ib_uverbs_free_hw_resources()
1126 mutex_lock(&uverbs_dev->lists_mutex); in ib_uverbs_free_hw_resources()
1127 while (!list_empty(&uverbs_dev->uverbs_file_list)) { in ib_uverbs_free_hw_resources()
1128 file = list_first_entry(&uverbs_dev->uverbs_file_list, in ib_uverbs_free_hw_resources()
1138 mutex_unlock(&uverbs_dev->lists_mutex); in ib_uverbs_free_hw_resources()
1146 mutex_lock(&uverbs_dev->lists_mutex); in ib_uverbs_free_hw_resources()
1148 mutex_unlock(&uverbs_dev->lists_mutex); in ib_uverbs_free_hw_resources()
1150 uverbs_disassociate_api(uverbs_dev->uapi); in ib_uverbs_free_hw_resources()
1155 struct ib_uverbs_device *uverbs_dev = client_data; in ib_uverbs_remove_one() local
1158 if (!uverbs_dev) in ib_uverbs_remove_one()
1161 cdev_device_del(&uverbs_dev->cdev, &uverbs_dev->dev); in ib_uverbs_remove_one()
1162 ida_free(&uverbs_ida, uverbs_dev->devnum); in ib_uverbs_remove_one()
1176 ib_uverbs_free_hw_resources(uverbs_dev, device); in ib_uverbs_remove_one()
1180 if (atomic_dec_and_test(&uverbs_dev->refcount)) in ib_uverbs_remove_one()
1181 ib_uverbs_comp_dev(uverbs_dev); in ib_uverbs_remove_one()
1183 wait_for_completion(&uverbs_dev->comp); in ib_uverbs_remove_one()
1185 put_device(&uverbs_dev->dev); in ib_uverbs_remove_one()