Lines Matching refs:vdev
24 void vdpa_set_status(struct vdpa_device *vdev, u8 status)
26 down_write(&vdev->cf_lock);
27 vdev->config->set_status(vdev, status);
28 up_write(&vdev->cf_lock);
36 struct vdpa_device *vdev = dev_to_vdpa(d);
37 struct vdpa_driver *drv = drv_to_vdpa(vdev->dev.driver);
38 const struct vdpa_config_ops *ops = vdev->config;
47 max_num = ops->get_vq_num_max(vdev);
49 min_num = ops->get_vq_num_min(vdev);
54 ret = drv->probe(vdev);
61 struct vdpa_device *vdev = dev_to_vdpa(d);
62 struct vdpa_driver *drv = drv_to_vdpa(vdev->dev.driver);
65 drv->remove(vdev);
70 struct vdpa_device *vdev = dev_to_vdpa(dev);
73 if (vdev->driver_override)
74 return strcmp(vdev->driver_override, drv->name) == 0;
84 struct vdpa_device *vdev = dev_to_vdpa(dev);
87 ret = driver_set_override(dev, &vdev->driver_override, buf, count);
97 struct vdpa_device *vdev = dev_to_vdpa(dev);
101 len = snprintf(buf, PAGE_SIZE, "%s\n", vdev->driver_override);
128 struct vdpa_device *vdev = dev_to_vdpa(d);
129 const struct vdpa_config_ops *ops = vdev->config;
132 ops->free(vdev);
134 ida_simple_remove(&vdpa_index_ida, vdev->index);
135 kfree(vdev->driver_override);
136 kfree(vdev);
163 struct vdpa_device *vdev;
177 vdev = kzalloc(size, GFP_KERNEL);
178 if (!vdev)
185 vdev->dev.bus = &vdpa_bus;
186 vdev->dev.parent = parent;
187 vdev->dev.release = vdpa_release_dev;
188 vdev->index = err;
189 vdev->config = config;
190 vdev->features_valid = false;
191 vdev->use_va = use_va;
192 vdev->ngroups = ngroups;
193 vdev->nas = nas;
196 err = dev_set_name(&vdev->dev, "%s", name);
198 err = dev_set_name(&vdev->dev, "vdpa%u", vdev->index);
202 init_rwsem(&vdev->cf_lock);
203 device_initialize(&vdev->dev);
205 return vdev;
208 ida_simple_remove(&vdpa_index_ida, vdev->index);
210 kfree(vdev);
218 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev);
220 return (strcmp(dev_name(&vdev->dev), data) == 0);
223 static int __vdpa_register_device(struct vdpa_device *vdev, u32 nvqs)
227 vdev->nvqs = nvqs;
230 dev = bus_find_device(&vdpa_bus, NULL, dev_name(&vdev->dev), vdpa_name_match);
235 return device_add(&vdev->dev);
243 * @vdev: the vdpa device to be registered to vDPA bus
248 int _vdpa_register_device(struct vdpa_device *vdev, u32 nvqs)
250 if (!vdev->mdev)
253 return __vdpa_register_device(vdev, nvqs);
260 * @vdev: the vdpa device to be registered to vDPA bus
265 int vdpa_register_device(struct vdpa_device *vdev, u32 nvqs)
270 err = __vdpa_register_device(vdev, nvqs);
280 * @vdev: the vdpa device to be unregisted from vDPA bus
282 void _vdpa_unregister_device(struct vdpa_device *vdev)
285 WARN_ON(!vdev->mdev);
286 device_unregister(&vdev->dev);
292 * @vdev: the vdpa device to be unregisted from vDPA bus
294 void vdpa_unregister_device(struct vdpa_device *vdev)
297 device_unregister(&vdev->dev);
352 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev);
353 struct vdpa_mgmt_dev *mdev = vdev->mdev;
356 mdev->ops->dev_del(mdev, vdev);
373 static void vdpa_get_config_unlocked(struct vdpa_device *vdev,
377 const struct vdpa_config_ops *ops = vdev->config;
383 if (!vdev->features_valid)
384 vdpa_set_features_unlocked(vdev, 0);
385 ops->get_config(vdev, offset, buf, len);
390 * @vdev: vdpa device to operate on
395 void vdpa_get_config(struct vdpa_device *vdev, unsigned int offset,
398 down_read(&vdev->cf_lock);
399 vdpa_get_config_unlocked(vdev, offset, buf, len);
400 up_read(&vdev->cf_lock);
406 * @vdev: vdpa device to operate on
411 void vdpa_set_config(struct vdpa_device *vdev, unsigned int offset,
414 down_write(&vdev->cf_lock);
415 vdev->config->set_config(vdev, offset, buf, length);
416 up_write(&vdev->cf_lock);
707 struct vdpa_device *vdev;
723 vdev = container_of(dev, struct vdpa_device, dev);
724 if (!vdev->mdev) {
729 mdev = vdev->mdev;
730 mdev->ops->dev_del(mdev, vdev);
739 vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq,
753 err = vdpa_nl_mgmtdev_handle_fill(msg, vdev->mdev);
757 device_id = vdev->config->get_device_id(vdev);
758 vendor_id = vdev->config->get_vendor_id(vdev);
759 max_vq_size = vdev->config->get_vq_num_max(vdev);
760 if (vdev->config->get_vq_num_min)
761 min_vq_size = vdev->config->get_vq_num_min(vdev);
764 if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev)))
770 if (nla_put_u32(msg, VDPA_ATTR_DEV_MAX_VQS, vdev->nvqs))
787 struct vdpa_device *vdev;
807 vdev = container_of(dev, struct vdpa_device, dev);
808 if (!vdev->mdev) {
812 err = vdpa_dev_fill(vdev, msg, info->snd_portid, info->snd_seq, 0, info->extack);
838 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev);
842 if (!vdev->mdev)
848 err = vdpa_dev_fill(vdev, info->msg, NETLINK_CB(info->cb->skb).portid,
922 static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *msg)
927 vdev->config->get_config(vdev, 0, &config, sizeof(config));
929 features_device = vdev->config->get_device_features(vdev);
948 vdpa_dev_config_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq,
957 down_read(&vdev->cf_lock);
965 if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev))) {
970 device_id = vdev->config->get_device_id(vdev);
977 status = vdev->config->get_status(vdev);
979 features_driver = vdev->config->get_driver_features(vdev);
989 err = vdpa_dev_net_config_fill(vdev, msg);
998 up_read(&vdev->cf_lock);
1005 up_read(&vdev->cf_lock);
1009 static int vdpa_fill_stats_rec(struct vdpa_device *vdev, struct sk_buff *msg,
1017 status = vdev->config->get_status(vdev);
1022 vdpa_get_config_unlocked(vdev, 0, &config, sizeof(config));
1024 features = vdev->config->get_driver_features(vdev);
1036 err = vdev->config->get_vendor_vq_stats(vdev, index, msg, info->extack);
1043 static int vendor_stats_fill(struct vdpa_device *vdev, struct sk_buff *msg,
1048 down_read(&vdev->cf_lock);
1049 if (!vdev->config->get_vendor_vq_stats) {
1054 err = vdpa_fill_stats_rec(vdev, msg, info, index);
1056 up_read(&vdev->cf_lock);
1060 static int vdpa_dev_vendor_stats_fill(struct vdpa_device *vdev,
1076 if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev))) {
1081 device_id = vdev->config->get_device_id(vdev);
1095 err = vendor_stats_fill(vdev, msg, info, index);
1112 struct vdpa_device *vdev;
1132 vdev = container_of(dev, struct vdpa_device, dev);
1133 if (!vdev->mdev) {
1138 err = vdpa_dev_config_fill(vdev, msg, info->snd_portid, info->snd_seq,
1154 struct vdpa_device *vdev = container_of(dev, struct vdpa_device, dev);
1158 if (!vdev->mdev)
1164 err = vdpa_dev_config_fill(vdev, info->msg, NETLINK_CB(info->cb->skb).portid,
1194 struct vdpa_device *vdev;
1220 vdev = container_of(dev, struct vdpa_device, dev);
1221 if (!vdev->mdev) {
1226 err = vdpa_dev_vendor_stats_fill(vdev, msg, info, index);