uverbs_dev 185 drivers/infiniband/core/rdma_core.h void uverbs_disassociate_api_pre(struct ib_uverbs_device *uverbs_dev); uverbs_dev 1157 drivers/infiniband/core/uverbs_main.c struct ib_uverbs_device *uverbs_dev = client_data; uverbs_dev 1164 drivers/infiniband/core/uverbs_main.c res->cdev = &uverbs_dev->dev; uverbs_dev 1242 drivers/infiniband/core/uverbs_main.c struct ib_uverbs_device *uverbs_dev) uverbs_dev 1250 drivers/infiniband/core/uverbs_main.c uverbs_dev->uapi = uapi; uverbs_dev 1258 drivers/infiniband/core/uverbs_main.c struct ib_uverbs_device *uverbs_dev; uverbs_dev 1264 drivers/infiniband/core/uverbs_main.c uverbs_dev = kzalloc(sizeof(*uverbs_dev), GFP_KERNEL); uverbs_dev 1265 drivers/infiniband/core/uverbs_main.c if (!uverbs_dev) uverbs_dev 1268 drivers/infiniband/core/uverbs_main.c ret = init_srcu_struct(&uverbs_dev->disassociate_srcu); uverbs_dev 1270 drivers/infiniband/core/uverbs_main.c kfree(uverbs_dev); uverbs_dev 1274 drivers/infiniband/core/uverbs_main.c device_initialize(&uverbs_dev->dev); uverbs_dev 1275 drivers/infiniband/core/uverbs_main.c uverbs_dev->dev.class = uverbs_class; uverbs_dev 1276 drivers/infiniband/core/uverbs_main.c uverbs_dev->dev.parent = device->dev.parent; uverbs_dev 1277 drivers/infiniband/core/uverbs_main.c uverbs_dev->dev.release = ib_uverbs_release_dev; uverbs_dev 1278 drivers/infiniband/core/uverbs_main.c uverbs_dev->groups[0] = &dev_attr_group; uverbs_dev 1279 drivers/infiniband/core/uverbs_main.c uverbs_dev->dev.groups = uverbs_dev->groups; uverbs_dev 1280 drivers/infiniband/core/uverbs_main.c atomic_set(&uverbs_dev->refcount, 1); uverbs_dev 1281 drivers/infiniband/core/uverbs_main.c init_completion(&uverbs_dev->comp); uverbs_dev 1282 drivers/infiniband/core/uverbs_main.c uverbs_dev->xrcd_tree = RB_ROOT; uverbs_dev 1283 drivers/infiniband/core/uverbs_main.c mutex_init(&uverbs_dev->xrcd_tree_mutex); uverbs_dev 1284 drivers/infiniband/core/uverbs_main.c mutex_init(&uverbs_dev->lists_mutex); uverbs_dev 1285 drivers/infiniband/core/uverbs_main.c INIT_LIST_HEAD(&uverbs_dev->uverbs_file_list); uverbs_dev 1286 drivers/infiniband/core/uverbs_main.c INIT_LIST_HEAD(&uverbs_dev->uverbs_events_file_list); uverbs_dev 1287 drivers/infiniband/core/uverbs_main.c rcu_assign_pointer(uverbs_dev->ib_dev, device); uverbs_dev 1288 drivers/infiniband/core/uverbs_main.c uverbs_dev->num_comp_vectors = device->num_comp_vectors; uverbs_dev 1294 drivers/infiniband/core/uverbs_main.c uverbs_dev->devnum = devnum; uverbs_dev 1300 drivers/infiniband/core/uverbs_main.c if (ib_uverbs_create_uapi(device, uverbs_dev)) uverbs_dev 1303 drivers/infiniband/core/uverbs_main.c uverbs_dev->dev.devt = base; uverbs_dev 1304 drivers/infiniband/core/uverbs_main.c dev_set_name(&uverbs_dev->dev, "uverbs%d", uverbs_dev->devnum); uverbs_dev 1306 drivers/infiniband/core/uverbs_main.c cdev_init(&uverbs_dev->cdev, uverbs_dev 1308 drivers/infiniband/core/uverbs_main.c uverbs_dev->cdev.owner = THIS_MODULE; uverbs_dev 1310 drivers/infiniband/core/uverbs_main.c ret = cdev_device_add(&uverbs_dev->cdev, &uverbs_dev->dev); uverbs_dev 1314 drivers/infiniband/core/uverbs_main.c ib_set_client_data(device, &uverbs_client, uverbs_dev); uverbs_dev 1320 drivers/infiniband/core/uverbs_main.c if (atomic_dec_and_test(&uverbs_dev->refcount)) uverbs_dev 1321 drivers/infiniband/core/uverbs_main.c ib_uverbs_comp_dev(uverbs_dev); uverbs_dev 1322 drivers/infiniband/core/uverbs_main.c wait_for_completion(&uverbs_dev->comp); uverbs_dev 1323 drivers/infiniband/core/uverbs_main.c put_device(&uverbs_dev->dev); uverbs_dev 1327 drivers/infiniband/core/uverbs_main.c static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev, uverbs_dev 1335 drivers/infiniband/core/uverbs_main.c uverbs_disassociate_api_pre(uverbs_dev); uverbs_dev 1340 drivers/infiniband/core/uverbs_main.c mutex_lock(&uverbs_dev->lists_mutex); uverbs_dev 1341 drivers/infiniband/core/uverbs_main.c while (!list_empty(&uverbs_dev->uverbs_file_list)) { uverbs_dev 1342 drivers/infiniband/core/uverbs_main.c file = list_first_entry(&uverbs_dev->uverbs_file_list, uverbs_dev 1352 drivers/infiniband/core/uverbs_main.c mutex_unlock(&uverbs_dev->lists_mutex); uverbs_dev 1358 drivers/infiniband/core/uverbs_main.c mutex_lock(&uverbs_dev->lists_mutex); uverbs_dev 1361 drivers/infiniband/core/uverbs_main.c while (!list_empty(&uverbs_dev->uverbs_events_file_list)) { uverbs_dev 1362 drivers/infiniband/core/uverbs_main.c event_file = list_first_entry(&uverbs_dev-> uverbs_dev 1379 drivers/infiniband/core/uverbs_main.c mutex_unlock(&uverbs_dev->lists_mutex); uverbs_dev 1381 drivers/infiniband/core/uverbs_main.c uverbs_disassociate_api(uverbs_dev->uapi); uverbs_dev 1386 drivers/infiniband/core/uverbs_main.c struct ib_uverbs_device *uverbs_dev = client_data; uverbs_dev 1389 drivers/infiniband/core/uverbs_main.c if (!uverbs_dev) uverbs_dev 1392 drivers/infiniband/core/uverbs_main.c cdev_device_del(&uverbs_dev->cdev, &uverbs_dev->dev); uverbs_dev 1393 drivers/infiniband/core/uverbs_main.c ida_free(&uverbs_ida, uverbs_dev->devnum); uverbs_dev 1407 drivers/infiniband/core/uverbs_main.c ib_uverbs_free_hw_resources(uverbs_dev, device); uverbs_dev 1411 drivers/infiniband/core/uverbs_main.c if (atomic_dec_and_test(&uverbs_dev->refcount)) uverbs_dev 1412 drivers/infiniband/core/uverbs_main.c ib_uverbs_comp_dev(uverbs_dev); uverbs_dev 1414 drivers/infiniband/core/uverbs_main.c wait_for_completion(&uverbs_dev->comp); uverbs_dev 1416 drivers/infiniband/core/uverbs_main.c put_device(&uverbs_dev->dev); uverbs_dev 680 drivers/infiniband/core/uverbs_uapi.c void uverbs_disassociate_api_pre(struct ib_uverbs_device *uverbs_dev) uverbs_dev 682 drivers/infiniband/core/uverbs_uapi.c struct uverbs_api *uapi = uverbs_dev->uapi; uverbs_dev 686 drivers/infiniband/core/uverbs_uapi.c rcu_assign_pointer(uverbs_dev->ib_dev, NULL); uverbs_dev 698 drivers/infiniband/core/uverbs_uapi.c synchronize_srcu(&uverbs_dev->disassociate_srcu);