Lines Matching refs:device

67 	struct device			*dev;
79 struct device *dev;
90 struct device *dev;
204 struct device *dev; in vfio_create_group()
364 struct device *dev, in vfio_group_create_device()
368 struct vfio_device *device; in vfio_group_create_device() local
370 device = kzalloc(sizeof(*device), GFP_KERNEL); in vfio_group_create_device()
371 if (!device) in vfio_group_create_device()
374 kref_init(&device->kref); in vfio_group_create_device()
375 device->dev = dev; in vfio_group_create_device()
376 device->group = group; in vfio_group_create_device()
377 device->ops = ops; in vfio_group_create_device()
378 device->device_data = device_data; in vfio_group_create_device()
379 dev_set_drvdata(dev, device); in vfio_group_create_device()
385 list_add(&device->group_next, &group->device_list); in vfio_group_create_device()
388 return device; in vfio_group_create_device()
393 struct vfio_device *device = container_of(kref, in vfio_device_release() local
395 struct vfio_group *group = device->group; in vfio_device_release()
397 list_del(&device->group_next); in vfio_device_release()
400 dev_set_drvdata(device->dev, NULL); in vfio_device_release()
402 kfree(device); in vfio_device_release()
409 void vfio_device_put(struct vfio_device *device) in vfio_device_put() argument
411 struct vfio_group *group = device->group; in vfio_device_put()
412 kref_put_mutex(&device->kref, vfio_device_release, &group->device_lock); in vfio_device_put()
417 static void vfio_device_get(struct vfio_device *device) in vfio_device_get() argument
419 vfio_group_get(device->group); in vfio_device_get()
420 kref_get(&device->kref); in vfio_device_get()
424 struct device *dev) in vfio_group_get_device()
426 struct vfio_device *device; in vfio_group_get_device() local
429 list_for_each_entry(device, &group->device_list, group_next) { in vfio_group_get_device()
430 if (device->dev == dev) { in vfio_group_get_device()
431 vfio_device_get(device); in vfio_group_get_device()
433 return device; in vfio_group_get_device()
472 static int vfio_dev_viable(struct device *dev, void *data) in vfio_dev_viable()
475 struct vfio_device *device; in vfio_dev_viable() local
492 device = vfio_group_get_device(group, dev); in vfio_dev_viable()
493 if (device) { in vfio_dev_viable()
494 vfio_device_put(device); in vfio_dev_viable()
504 static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev) in vfio_group_nb_add_dev()
506 struct vfio_device *device; in vfio_group_nb_add_dev() local
509 device = vfio_group_get_device(group, dev); in vfio_group_nb_add_dev()
510 if (WARN_ON_ONCE(device)) { in vfio_group_nb_add_dev()
511 vfio_device_put(device); in vfio_group_nb_add_dev()
526 static int vfio_group_nb_verify(struct vfio_group *group, struct device *dev) in vfio_group_nb_verify()
539 struct device *dev = data; in vfio_iommu_group_notifier()
611 int vfio_add_group_dev(struct device *dev, in vfio_add_group_dev()
616 struct vfio_device *device; in vfio_add_group_dev() local
637 device = vfio_group_get_device(group, dev); in vfio_add_group_dev()
638 if (device) { in vfio_add_group_dev()
641 vfio_device_put(device); in vfio_add_group_dev()
646 device = vfio_group_create_device(group, dev, ops, device_data); in vfio_add_group_dev()
647 if (IS_ERR(device)) { in vfio_add_group_dev()
649 return PTR_ERR(device); in vfio_add_group_dev()
671 struct vfio_device *vfio_device_get_from_dev(struct device *dev) in vfio_device_get_from_dev()
673 struct vfio_device *device = dev_get_drvdata(dev); in vfio_device_get_from_dev() local
675 vfio_device_get(device); in vfio_device_get_from_dev()
677 return device; in vfio_device_get_from_dev()
684 void *vfio_device_data(struct vfio_device *device) in vfio_device_data() argument
686 return device->device_data; in vfio_device_data()
691 static bool vfio_dev_present(struct vfio_group *group, struct device *dev) in vfio_dev_present()
693 struct vfio_device *device; in vfio_dev_present() local
695 device = vfio_group_get_device(group, dev); in vfio_dev_present()
696 if (!device) in vfio_dev_present()
699 vfio_device_put(device); in vfio_dev_present()
706 void *vfio_del_group_dev(struct device *dev) in vfio_del_group_dev()
708 struct vfio_device *device = dev_get_drvdata(dev); in vfio_del_group_dev() local
709 struct vfio_group *group = device->group; in vfio_del_group_dev()
710 void *device_data = device->device_data; in vfio_del_group_dev()
740 vfio_device_put(device); in vfio_del_group_dev()
751 device = vfio_group_get_device(group, dev); in vfio_del_group_dev()
752 if (!device) in vfio_del_group_dev()
755 if (device->ops->request) in vfio_del_group_dev()
756 device->ops->request(device_data, i++); in vfio_del_group_dev()
758 vfio_device_put(device); in vfio_del_group_dev()
1188 struct vfio_device *device; in vfio_group_get_device_fd() local
1197 list_for_each_entry(device, &group->device_list, group_next) { in vfio_group_get_device_fd()
1198 if (strcmp(dev_name(device->dev), buf)) in vfio_group_get_device_fd()
1201 ret = device->ops->open(device->device_data); in vfio_group_get_device_fd()
1210 device->ops->release(device->device_data); in vfio_group_get_device_fd()
1215 device, O_RDWR); in vfio_group_get_device_fd()
1219 device->ops->release(device->device_data); in vfio_group_get_device_fd()
1230 vfio_device_get(device); in vfio_group_get_device_fd()
1375 struct vfio_device *device = filep->private_data; in vfio_device_fops_release() local
1377 device->ops->release(device->device_data); in vfio_device_fops_release()
1379 vfio_group_try_dissolve_container(device->group); in vfio_device_fops_release()
1381 vfio_device_put(device); in vfio_device_fops_release()
1389 struct vfio_device *device = filep->private_data; in vfio_device_fops_unl_ioctl() local
1391 if (unlikely(!device->ops->ioctl)) in vfio_device_fops_unl_ioctl()
1394 return device->ops->ioctl(device->device_data, cmd, arg); in vfio_device_fops_unl_ioctl()
1400 struct vfio_device *device = filep->private_data; in vfio_device_fops_read() local
1402 if (unlikely(!device->ops->read)) in vfio_device_fops_read()
1405 return device->ops->read(device->device_data, buf, count, ppos); in vfio_device_fops_read()
1412 struct vfio_device *device = filep->private_data; in vfio_device_fops_write() local
1414 if (unlikely(!device->ops->write)) in vfio_device_fops_write()
1417 return device->ops->write(device->device_data, buf, count, ppos); in vfio_device_fops_write()
1422 struct vfio_device *device = filep->private_data; in vfio_device_fops_mmap() local
1424 if (unlikely(!device->ops->mmap)) in vfio_device_fops_mmap()
1427 return device->ops->mmap(device->device_data, vma); in vfio_device_fops_mmap()
1522 static char *vfio_devnode(struct device *dev, umode_t *mode) in vfio_devnode()