• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/ofed/drivers/infiniband/core/

Lines Matching refs:uverbs_dev

1165 	struct ib_uverbs_device *uverbs_dev;
1171 uverbs_dev = kzalloc(sizeof *uverbs_dev, GFP_KERNEL);
1172 if (!uverbs_dev)
1175 ret = init_srcu_struct(&uverbs_dev->disassociate_srcu);
1177 kfree(uverbs_dev);
1181 atomic_set(&uverbs_dev->refcount, 1);
1182 init_completion(&uverbs_dev->comp);
1183 uverbs_dev->xrcd_tree = RB_ROOT;
1184 mutex_init(&uverbs_dev->xrcd_tree_mutex);
1185 kobject_init(&uverbs_dev->kobj, &ib_uverbs_dev_ktype);
1186 mutex_init(&uverbs_dev->lists_mutex);
1187 INIT_LIST_HEAD(&uverbs_dev->uverbs_file_list);
1188 INIT_LIST_HEAD(&uverbs_dev->uverbs_events_file_list);
1199 uverbs_dev->devnum = devnum + IB_UVERBS_MAX_DEVICES;
1203 uverbs_dev->devnum = devnum;
1209 rcu_assign_pointer(uverbs_dev->ib_dev, device);
1210 uverbs_dev->num_comp_vectors = device->num_comp_vectors;
1212 cdev_init(&uverbs_dev->cdev, NULL);
1213 uverbs_dev->cdev.owner = THIS_MODULE;
1214 uverbs_dev->cdev.ops = device->mmap ? &uverbs_mmap_fops : &uverbs_fops;
1215 uverbs_dev->cdev.kobj.parent = &uverbs_dev->kobj;
1216 kobject_set_name(&uverbs_dev->cdev.kobj, "uverbs%d", uverbs_dev->devnum);
1217 if (cdev_add(&uverbs_dev->cdev, base, 1))
1220 uverbs_dev->dev = device_create(uverbs_class, device->dma_device,
1221 uverbs_dev->cdev.dev, uverbs_dev,
1222 "uverbs%d", uverbs_dev->devnum);
1223 if (IS_ERR(uverbs_dev->dev))
1226 if (device_create_file(uverbs_dev->dev, &dev_attr_ibdev))
1228 if (device_create_file(uverbs_dev->dev, &dev_attr_abi_version))
1230 if (sysfs_create_group(&uverbs_dev->dev->kobj, &device_group))
1233 ib_set_client_data(device, &uverbs_client, uverbs_dev);
1238 device_destroy(uverbs_class, uverbs_dev->cdev.dev);
1241 cdev_del(&uverbs_dev->cdev);
1242 if (uverbs_dev->devnum < IB_UVERBS_MAX_DEVICES)
1248 if (atomic_dec_and_test(&uverbs_dev->refcount))
1249 ib_uverbs_comp_dev(uverbs_dev);
1250 wait_for_completion(&uverbs_dev->comp);
1251 kobject_put(&uverbs_dev->kobj);
1255 static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev,
1263 synchronize_srcu(&uverbs_dev->disassociate_srcu);
1268 mutex_lock(&uverbs_dev->lists_mutex);
1269 while (!list_empty(&uverbs_dev->uverbs_file_list)) {
1271 file = list_first_entry(&uverbs_dev->uverbs_file_list,
1276 mutex_unlock(&uverbs_dev->lists_mutex);
1299 mutex_lock(&uverbs_dev->lists_mutex);
1303 while (!list_empty(&uverbs_dev->uverbs_events_file_list)) {
1304 event_file = list_first_entry(&uverbs_dev->
1322 mutex_unlock(&uverbs_dev->lists_mutex);
1327 struct ib_uverbs_device *uverbs_dev = client_data;
1330 if (!uverbs_dev)
1333 sysfs_remove_group(&uverbs_dev->dev->kobj, &device_group);
1334 dev_set_drvdata(uverbs_dev->dev, NULL);
1335 device_destroy(uverbs_class, uverbs_dev->cdev.dev);
1336 cdev_del(&uverbs_dev->cdev);
1338 if (uverbs_dev->devnum < IB_UVERBS_MAX_DEVICES)
1339 clear_bit(uverbs_dev->devnum, dev_map);
1341 clear_bit(uverbs_dev->devnum - IB_UVERBS_MAX_DEVICES, overflow_map);
1355 rcu_assign_pointer(uverbs_dev->ib_dev, NULL);
1356 ib_uverbs_free_hw_resources(uverbs_dev, device);
1360 if (atomic_dec_and_test(&uverbs_dev->refcount))
1361 ib_uverbs_comp_dev(uverbs_dev);
1363 wait_for_completion(&uverbs_dev->comp);
1364 kobject_put(&uverbs_dev->kobj);