Lines Matching refs:vdev
24 void vdpa_set_status(struct vdpa_device *vdev, u8 status) in vdpa_set_status() argument
26 down_write(&vdev->cf_lock); in vdpa_set_status()
27 vdev->config->set_status(vdev, status); in vdpa_set_status()
28 up_write(&vdev->cf_lock); in vdpa_set_status()
36 struct vdpa_device *vdev = dev_to_vdpa(d); in vdpa_dev_probe() local
37 struct vdpa_driver *drv = drv_to_vdpa(vdev->dev.driver); in vdpa_dev_probe()
38 const struct vdpa_config_ops *ops = vdev->config; in vdpa_dev_probe()
42 max_num = ops->get_vq_num_max(vdev); in vdpa_dev_probe()
44 min_num = ops->get_vq_num_min(vdev); in vdpa_dev_probe()
49 ret = drv->probe(vdev); in vdpa_dev_probe()
56 struct vdpa_device *vdev = dev_to_vdpa(d); in vdpa_dev_remove() local
57 struct vdpa_driver *drv = drv_to_vdpa(vdev->dev.driver); in vdpa_dev_remove()
60 drv->remove(vdev); in vdpa_dev_remove()
65 struct vdpa_device *vdev = dev_to_vdpa(dev); in vdpa_dev_match() local
68 if (vdev->driver_override) in vdpa_dev_match()
69 return strcmp(vdev->driver_override, drv->name) == 0; in vdpa_dev_match()
79 struct vdpa_device *vdev = dev_to_vdpa(dev); in driver_override_store() local
82 ret = driver_set_override(dev, &vdev->driver_override, buf, count); in driver_override_store()
92 struct vdpa_device *vdev = dev_to_vdpa(dev); in driver_override_show() local
96 len = snprintf(buf, PAGE_SIZE, "%s\n", vdev->driver_override); in driver_override_show()
123 struct vdpa_device *vdev = dev_to_vdpa(d); in vdpa_release_dev() local
124 const struct vdpa_config_ops *ops = vdev->config; in vdpa_release_dev()
127 ops->free(vdev); in vdpa_release_dev()
129 ida_simple_remove(&vdpa_index_ida, vdev->index); in vdpa_release_dev()
130 kfree(vdev->driver_override); in vdpa_release_dev()
131 kfree(vdev); in vdpa_release_dev()
158 struct vdpa_device *vdev; in __vdpa_alloc_device() local
172 vdev = kzalloc(size, GFP_KERNEL); in __vdpa_alloc_device()
173 if (!vdev) in __vdpa_alloc_device()
180 vdev->dev.bus = &vdpa_bus; in __vdpa_alloc_device()
181 vdev->dev.parent = parent; in __vdpa_alloc_device()
182 vdev->dev.release = vdpa_release_dev; in __vdpa_alloc_device()
183 vdev->index = err; in __vdpa_alloc_device()
184 vdev->config = config; in __vdpa_alloc_device()
185 vdev->features_valid = false; in __vdpa_alloc_device()
186 vdev->use_va = use_va; in __vdpa_alloc_device()
187 vdev->ngroups = ngroups; in __vdpa_alloc_device()
188 vdev->nas = nas; in __vdpa_alloc_device()
191 err = dev_set_name(&vdev->dev, "%s", name); in __vdpa_alloc_device()
193 err = dev_set_name(&vdev->dev, "vdpa%u", vdev->index); in __vdpa_alloc_device()
197 init_rwsem(&vdev->cf_lock); in __vdpa_alloc_device()
198 device_initialize(&vdev->dev); in __vdpa_alloc_device()
200 return vdev; in __vdpa_alloc_device()
203 ida_simple_remove(&vdpa_index_ida, vdev->index); in __vdpa_alloc_device()
205 kfree(vdev); in __vdpa_alloc_device()
213 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev); in vdpa_name_match() local
215 return (strcmp(dev_name(&vdev->dev), data) == 0); in vdpa_name_match()
218 static int __vdpa_register_device(struct vdpa_device *vdev, u32 nvqs) in __vdpa_register_device() argument
222 vdev->nvqs = nvqs; in __vdpa_register_device()
225 dev = bus_find_device(&vdpa_bus, NULL, dev_name(&vdev->dev), vdpa_name_match); in __vdpa_register_device()
230 return device_add(&vdev->dev); in __vdpa_register_device()
243 int _vdpa_register_device(struct vdpa_device *vdev, u32 nvqs) in _vdpa_register_device() argument
245 if (!vdev->mdev) in _vdpa_register_device()
248 return __vdpa_register_device(vdev, nvqs); in _vdpa_register_device()
260 int vdpa_register_device(struct vdpa_device *vdev, u32 nvqs) in vdpa_register_device() argument
265 err = __vdpa_register_device(vdev, nvqs); in vdpa_register_device()
277 void _vdpa_unregister_device(struct vdpa_device *vdev) in _vdpa_unregister_device() argument
280 WARN_ON(!vdev->mdev); in _vdpa_unregister_device()
281 device_unregister(&vdev->dev); in _vdpa_unregister_device()
289 void vdpa_unregister_device(struct vdpa_device *vdev) in vdpa_unregister_device() argument
292 device_unregister(&vdev->dev); in vdpa_unregister_device()
347 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev); in vdpa_match_remove() local
348 struct vdpa_mgmt_dev *mdev = vdev->mdev; in vdpa_match_remove()
351 mdev->ops->dev_del(mdev, vdev); in vdpa_match_remove()
368 static void vdpa_get_config_unlocked(struct vdpa_device *vdev, in vdpa_get_config_unlocked() argument
372 const struct vdpa_config_ops *ops = vdev->config; in vdpa_get_config_unlocked()
378 if (!vdev->features_valid) in vdpa_get_config_unlocked()
379 vdpa_set_features_unlocked(vdev, 0); in vdpa_get_config_unlocked()
380 ops->get_config(vdev, offset, buf, len); in vdpa_get_config_unlocked()
390 void vdpa_get_config(struct vdpa_device *vdev, unsigned int offset, in vdpa_get_config() argument
393 down_read(&vdev->cf_lock); in vdpa_get_config()
394 vdpa_get_config_unlocked(vdev, offset, buf, len); in vdpa_get_config()
395 up_read(&vdev->cf_lock); in vdpa_get_config()
406 void vdpa_set_config(struct vdpa_device *vdev, unsigned int offset, in vdpa_set_config() argument
409 down_write(&vdev->cf_lock); in vdpa_set_config()
410 vdev->config->set_config(vdev, offset, buf, length); in vdpa_set_config()
411 up_write(&vdev->cf_lock); in vdpa_set_config()
641 struct vdpa_device *vdev; in vdpa_nl_cmd_dev_del_set_doit() local
657 vdev = container_of(dev, struct vdpa_device, dev); in vdpa_nl_cmd_dev_del_set_doit()
658 if (!vdev->mdev) { in vdpa_nl_cmd_dev_del_set_doit()
663 mdev = vdev->mdev; in vdpa_nl_cmd_dev_del_set_doit()
664 mdev->ops->dev_del(mdev, vdev); in vdpa_nl_cmd_dev_del_set_doit()
673 vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq, in vdpa_dev_fill() argument
687 err = vdpa_nl_mgmtdev_handle_fill(msg, vdev->mdev); in vdpa_dev_fill()
691 device_id = vdev->config->get_device_id(vdev); in vdpa_dev_fill()
692 vendor_id = vdev->config->get_vendor_id(vdev); in vdpa_dev_fill()
693 max_vq_size = vdev->config->get_vq_num_max(vdev); in vdpa_dev_fill()
694 if (vdev->config->get_vq_num_min) in vdpa_dev_fill()
695 min_vq_size = vdev->config->get_vq_num_min(vdev); in vdpa_dev_fill()
698 if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev))) in vdpa_dev_fill()
704 if (nla_put_u32(msg, VDPA_ATTR_DEV_MAX_VQS, vdev->nvqs)) in vdpa_dev_fill()
721 struct vdpa_device *vdev; in vdpa_nl_cmd_dev_get_doit() local
741 vdev = container_of(dev, struct vdpa_device, dev); in vdpa_nl_cmd_dev_get_doit()
742 if (!vdev->mdev) { in vdpa_nl_cmd_dev_get_doit()
746 err = vdpa_dev_fill(vdev, msg, info->snd_portid, info->snd_seq, 0, info->extack); in vdpa_nl_cmd_dev_get_doit()
772 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev); in vdpa_dev_dump() local
776 if (!vdev->mdev) in vdpa_dev_dump()
782 err = vdpa_dev_fill(vdev, info->msg, NETLINK_CB(info->cb->skb).portid, in vdpa_dev_dump()
844 static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *msg) in vdpa_dev_net_config_fill() argument
850 vdev->config->get_config(vdev, 0, &config, sizeof(config)); in vdpa_dev_net_config_fill()
856 features_device = vdev->config->get_device_features(vdev); in vdpa_dev_net_config_fill()
872 vdpa_dev_config_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq, in vdpa_dev_config_fill() argument
881 down_read(&vdev->cf_lock); in vdpa_dev_config_fill()
889 if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev))) { in vdpa_dev_config_fill()
894 device_id = vdev->config->get_device_id(vdev); in vdpa_dev_config_fill()
901 status = vdev->config->get_status(vdev); in vdpa_dev_config_fill()
903 features_driver = vdev->config->get_driver_features(vdev); in vdpa_dev_config_fill()
913 err = vdpa_dev_net_config_fill(vdev, msg); in vdpa_dev_config_fill()
922 up_read(&vdev->cf_lock); in vdpa_dev_config_fill()
929 up_read(&vdev->cf_lock); in vdpa_dev_config_fill()
933 static int vdpa_fill_stats_rec(struct vdpa_device *vdev, struct sk_buff *msg, in vdpa_fill_stats_rec() argument
942 status = vdev->config->get_status(vdev); in vdpa_fill_stats_rec()
947 vdpa_get_config_unlocked(vdev, 0, &config, sizeof(config)); in vdpa_fill_stats_rec()
953 features = vdev->config->get_driver_features(vdev); in vdpa_fill_stats_rec()
961 err = vdev->config->get_vendor_vq_stats(vdev, index, msg, info->extack); in vdpa_fill_stats_rec()
968 static int vendor_stats_fill(struct vdpa_device *vdev, struct sk_buff *msg, in vendor_stats_fill() argument
973 down_read(&vdev->cf_lock); in vendor_stats_fill()
974 if (!vdev->config->get_vendor_vq_stats) { in vendor_stats_fill()
979 err = vdpa_fill_stats_rec(vdev, msg, info, index); in vendor_stats_fill()
981 up_read(&vdev->cf_lock); in vendor_stats_fill()
985 static int vdpa_dev_vendor_stats_fill(struct vdpa_device *vdev, in vdpa_dev_vendor_stats_fill() argument
1001 if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev))) { in vdpa_dev_vendor_stats_fill()
1006 device_id = vdev->config->get_device_id(vdev); in vdpa_dev_vendor_stats_fill()
1020 err = vendor_stats_fill(vdev, msg, info, index); in vdpa_dev_vendor_stats_fill()
1037 struct vdpa_device *vdev; in vdpa_nl_cmd_dev_config_get_doit() local
1057 vdev = container_of(dev, struct vdpa_device, dev); in vdpa_nl_cmd_dev_config_get_doit()
1058 if (!vdev->mdev) { in vdpa_nl_cmd_dev_config_get_doit()
1063 err = vdpa_dev_config_fill(vdev, msg, info->snd_portid, info->snd_seq, in vdpa_nl_cmd_dev_config_get_doit()
1079 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev); in vdpa_dev_config_dump() local
1083 if (!vdev->mdev) in vdpa_dev_config_dump()
1089 err = vdpa_dev_config_fill(vdev, info->msg, NETLINK_CB(info->cb->skb).portid, in vdpa_dev_config_dump()
1119 struct vdpa_device *vdev; in vdpa_nl_cmd_dev_stats_get_doit() local
1145 vdev = container_of(dev, struct vdpa_device, dev); in vdpa_nl_cmd_dev_stats_get_doit()
1146 if (!vdev->mdev) { in vdpa_nl_cmd_dev_stats_get_doit()
1151 err = vdpa_dev_vendor_stats_fill(vdev, msg, info, index); in vdpa_nl_cmd_dev_stats_get_doit()