Lines Matching defs:mdev
250 if (!vdev->mdev)
285 WARN_ON(!vdev->mdev);
331 * @mdev: Pointer to vdpa management device
337 int vdpa_mgmtdev_register(struct vdpa_mgmt_dev *mdev)
339 if (!mdev->device || !mdev->ops || !mdev->ops->dev_add || !mdev->ops->dev_del)
342 INIT_LIST_HEAD(&mdev->list);
344 list_add_tail(&mdev->list, &mdev_head);
353 struct vdpa_mgmt_dev *mdev = vdev->mdev;
355 if (mdev == data)
356 mdev->ops->dev_del(mdev, vdev);
360 void vdpa_mgmtdev_unregister(struct vdpa_mgmt_dev *mdev)
364 list_del(&mdev->list);
367 bus_for_each_dev(&vdpa_bus, NULL, mdev, vdpa_match_remove);
420 static bool mgmtdev_handle_match(const struct vdpa_mgmt_dev *mdev,
426 if ((busname && !mdev->device->bus) || (!busname && mdev->device->bus))
429 if (!busname && strcmp(dev_name(mdev->device), devname) == 0)
432 if (busname && (strcmp(mdev->device->bus->name, busname) == 0) &&
433 (strcmp(dev_name(mdev->device), devname) == 0))
441 struct vdpa_mgmt_dev *mdev;
451 list_for_each_entry(mdev, &mdev_head, list) {
452 if (mgmtdev_handle_match(mdev, busname, devname))
453 return mdev;
458 static int vdpa_nl_mgmtdev_handle_fill(struct sk_buff *msg, const struct vdpa_mgmt_dev *mdev)
460 if (mdev->device->bus &&
461 nla_put_string(msg, VDPA_ATTR_MGMTDEV_BUS_NAME, mdev->device->bus->name))
463 if (nla_put_string(msg, VDPA_ATTR_MGMTDEV_DEV_NAME, dev_name(mdev->device)))
468 static u64 vdpa_mgmtdev_get_classes(const struct vdpa_mgmt_dev *mdev,
474 for (int i = 0; mdev->id_table[i].device; i++) {
475 if (mdev->id_table[i].device > 63)
477 supported_classes |= BIT_ULL(mdev->id_table[i].device);
486 static int vdpa_mgmtdev_fill(const struct vdpa_mgmt_dev *mdev, struct sk_buff *msg,
495 err = vdpa_nl_mgmtdev_handle_fill(msg, mdev);
500 vdpa_mgmtdev_get_classes(mdev, NULL),
506 mdev->max_supported_vqs)) {
511 mdev->supported_features, VDPA_ATTR_PAD)) {
526 struct vdpa_mgmt_dev *mdev;
535 mdev = vdpa_mgmtdev_get_from_attr(info->attrs);
536 if (IS_ERR(mdev)) {
539 err = PTR_ERR(mdev);
543 err = vdpa_mgmtdev_fill(mdev, msg, info->snd_portid, info->snd_seq, 0);
558 struct vdpa_mgmt_dev *mdev;
564 list_for_each_entry(mdev, &mdev_head, list) {
569 err = vdpa_mgmtdev_fill(mdev, msg, NETLINK_CB(cb->skb).portid,
599 struct vdpa_mgmt_dev *mdev;
665 mdev = vdpa_mgmtdev_get_from_attr(info->attrs);
666 if (IS_ERR(mdev)) {
668 err = PTR_ERR(mdev);
672 if ((config.mask & mdev->config_attr_mask) != config.mask) {
675 config.mask & ~mdev->config_attr_mask);
680 classes = vdpa_mgmtdev_get_classes(mdev, &ncls);
698 err = mdev->ops->dev_add(mdev, name, &config);
706 struct vdpa_mgmt_dev *mdev;
724 if (!vdev->mdev) {
729 mdev = vdev->mdev;
730 mdev->ops->dev_del(mdev, vdev);
753 err = vdpa_nl_mgmtdev_handle_fill(msg, vdev->mdev);
808 if (!vdev->mdev) {
842 if (!vdev->mdev)
1133 if (!vdev->mdev) {
1158 if (!vdev->mdev)
1221 if (!vdev->mdev) {