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