Lines Matching refs:uverbs_dev

906 	struct ib_uverbs_device *uverbs_dev =
910 mutex_lock(&uverbs_dev->lists_mutex);
911 list_for_each_entry(ufile, &uverbs_dev->uverbs_file_list, list) {
915 mutex_unlock(&uverbs_dev->lists_mutex);
1049 struct ib_uverbs_device *uverbs_dev = client_data;
1056 res->cdev = &uverbs_dev->dev;
1134 struct ib_uverbs_device *uverbs_dev)
1142 uverbs_dev->uapi = uapi;
1150 struct ib_uverbs_device *uverbs_dev;
1157 uverbs_dev = kzalloc_obj(*uverbs_dev);
1158 if (!uverbs_dev)
1161 ret = init_srcu_struct(&uverbs_dev->disassociate_srcu);
1163 kfree(uverbs_dev);
1167 device_initialize(&uverbs_dev->dev);
1168 uverbs_dev->dev.class = &uverbs_class;
1169 uverbs_dev->dev.parent = device->dev.parent;
1170 uverbs_dev->dev.release = ib_uverbs_release_dev;
1171 uverbs_dev->groups[0] = &dev_attr_group;
1172 uverbs_dev->dev.groups = uverbs_dev->groups;
1173 refcount_set(&uverbs_dev->refcount, 1);
1174 init_completion(&uverbs_dev->comp);
1175 uverbs_dev->xrcd_tree = RB_ROOT;
1176 mutex_init(&uverbs_dev->xrcd_tree_mutex);
1177 mutex_init(&uverbs_dev->lists_mutex);
1178 INIT_LIST_HEAD(&uverbs_dev->uverbs_file_list);
1179 rcu_assign_pointer(uverbs_dev->ib_dev, device);
1180 uverbs_dev->num_comp_vectors = device->num_comp_vectors;
1188 uverbs_dev->devnum = devnum;
1194 ret = ib_uverbs_create_uapi(device, uverbs_dev);
1198 uverbs_dev->dev.devt = base;
1199 dev_set_name(&uverbs_dev->dev, "uverbs%d", uverbs_dev->devnum);
1201 cdev_init(&uverbs_dev->cdev,
1203 uverbs_dev->cdev.owner = THIS_MODULE;
1205 ret = cdev_device_add(&uverbs_dev->cdev, &uverbs_dev->dev);
1209 ib_set_client_data(device, &uverbs_client, uverbs_dev);
1215 if (refcount_dec_and_test(&uverbs_dev->refcount))
1216 ib_uverbs_comp_dev(uverbs_dev);
1217 wait_for_completion(&uverbs_dev->comp);
1218 put_device(&uverbs_dev->dev);
1222 static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev,
1228 uverbs_disassociate_api_pre(uverbs_dev);
1230 mutex_lock(&uverbs_dev->lists_mutex);
1231 while (!list_empty(&uverbs_dev->uverbs_file_list)) {
1232 file = list_first_entry(&uverbs_dev->uverbs_file_list,
1242 mutex_unlock(&uverbs_dev->lists_mutex);
1247 mutex_lock(&uverbs_dev->lists_mutex);
1249 mutex_unlock(&uverbs_dev->lists_mutex);
1251 uverbs_disassociate_api(uverbs_dev->uapi);
1256 struct ib_uverbs_device *uverbs_dev = client_data;
1259 cdev_device_del(&uverbs_dev->cdev, &uverbs_dev->dev);
1260 ida_free(&uverbs_ida, uverbs_dev->devnum);
1274 ib_uverbs_free_hw_resources(uverbs_dev, device);
1278 if (refcount_dec_and_test(&uverbs_dev->refcount))
1279 ib_uverbs_comp_dev(uverbs_dev);
1281 wait_for_completion(&uverbs_dev->comp);
1283 put_device(&uverbs_dev->dev);