From: Jason Wang <jasowang@redhat.com> To: Stefano Garzarella <sgarzare@redhat.com>, virtualization@lists.linux-foundation.org Cc: netdev@vger.kernel.org, Xie Yongji <xieyongji@bytedance.com>, Laurent Vivier <lvivier@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, linux-kernel@vger.kernel.org, Max Gurtovoy <mgurtovoy@nvidia.com>, Parav Pandit <parav@nvidia.com>, "Michael S. Tsirkin" <mst@redhat.com>, kvm@vger.kernel.org Subject: Re: [PATCH v4 14/14] vdpa_sim_blk: add support for vdpa management tool Date: Thu, 18 Mar 2021 11:31:54 +0800 [thread overview] Message-ID: <94bb9e5a-a1b9-2e0d-d5ec-c6a3eaebea88@redhat.com> (raw) In-Reply-To: <20210315163450.254396-15-sgarzare@redhat.com> 在 2021/3/16 上午12:34, Stefano Garzarella 写道: > Enable the user to create vDPA block simulator devices using the > vdpa management tool: > > # Show vDPA supported devices > $ vdpa mgmtdev show > vdpasim_blk: > supported_classes block > > # Create a vDPA block device named as 'blk0' from the management > # device vdpasim: > $ vdpa dev add mgmtdev vdpasim_blk name blk0 > > # Show the info of the 'blk0' device just created > $ vdpa dev show blk0 -jp > { > "dev": { > "blk0": { > "type": "block", > "mgmtdev": "vdpasim_blk", > "vendor_id": 0, > "max_vqs": 1, > "max_vq_size": 256 > } > } > } > > # Delete the vDPA device after its use > $ vdpa dev del blk0 > > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Acked-by: Jason Wang <jasowang@redhat.com> > --- > drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 76 +++++++++++++++++++++++----- > 1 file changed, 63 insertions(+), 13 deletions(-) > > diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c > index 643ae3bc62c0..5bfe1c281645 100644 > --- a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c > +++ b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c > @@ -37,7 +37,6 @@ > #define VDPASIM_BLK_SEG_MAX 32 > #define VDPASIM_BLK_VQ_NUM 1 > > -static struct vdpasim *vdpasim_blk_dev; > static char vdpasim_blk_id[VIRTIO_BLK_ID_BYTES] = "vdpa_blk_sim"; > > static bool vdpasim_blk_check_range(u64 start_sector, size_t range_size) > @@ -241,11 +240,23 @@ static void vdpasim_blk_get_config(struct vdpasim *vdpasim, void *config) > blk_config->blk_size = cpu_to_vdpasim32(vdpasim, SECTOR_SIZE); > } > > -static int __init vdpasim_blk_init(void) > +static void vdpasim_blk_mgmtdev_release(struct device *dev) > +{ > +} > + > +static struct device vdpasim_blk_mgmtdev = { > + .init_name = "vdpasim_blk", > + .release = vdpasim_blk_mgmtdev_release, > +}; > + > +static int vdpasim_blk_dev_add(struct vdpa_mgmt_dev *mdev, const char *name) > { > struct vdpasim_dev_attr dev_attr = {}; > + struct vdpasim *simdev; > int ret; > > + dev_attr.mgmt_dev = mdev; > + dev_attr.name = name; > dev_attr.id = VIRTIO_ID_BLOCK; > dev_attr.supported_features = VDPASIM_BLK_FEATURES; > dev_attr.nvqs = VDPASIM_BLK_VQ_NUM; > @@ -254,29 +265,68 @@ static int __init vdpasim_blk_init(void) > dev_attr.work_fn = vdpasim_blk_work; > dev_attr.buffer_size = VDPASIM_BLK_CAPACITY << SECTOR_SHIFT; > > - vdpasim_blk_dev = vdpasim_create(&dev_attr); > - if (IS_ERR(vdpasim_blk_dev)) { > - ret = PTR_ERR(vdpasim_blk_dev); > - goto out; > - } > + simdev = vdpasim_create(&dev_attr); > + if (IS_ERR(simdev)) > + return PTR_ERR(simdev); > > - ret = vdpa_register_device(&vdpasim_blk_dev->vdpa, VDPASIM_BLK_VQ_NUM); > + ret = _vdpa_register_device(&simdev->vdpa, VDPASIM_BLK_VQ_NUM); > if (ret) > goto put_dev; > > return 0; > > put_dev: > - put_device(&vdpasim_blk_dev->vdpa.dev); > -out: > + put_device(&simdev->vdpa.dev); > return ret; > } > > -static void __exit vdpasim_blk_exit(void) > +static void vdpasim_blk_dev_del(struct vdpa_mgmt_dev *mdev, > + struct vdpa_device *dev) > { > - struct vdpa_device *vdpa = &vdpasim_blk_dev->vdpa; > + struct vdpasim *simdev = container_of(dev, struct vdpasim, vdpa); > + > + _vdpa_unregister_device(&simdev->vdpa); > +} > + > +static const struct vdpa_mgmtdev_ops vdpasim_blk_mgmtdev_ops = { > + .dev_add = vdpasim_blk_dev_add, > + .dev_del = vdpasim_blk_dev_del > +}; > > - vdpa_unregister_device(vdpa); > +static struct virtio_device_id id_table[] = { > + { VIRTIO_ID_BLOCK, VIRTIO_DEV_ANY_ID }, > + { 0 }, > +}; > + > +static struct vdpa_mgmt_dev mgmt_dev = { > + .device = &vdpasim_blk_mgmtdev, > + .id_table = id_table, > + .ops = &vdpasim_blk_mgmtdev_ops, > +}; > + > +static int __init vdpasim_blk_init(void) > +{ > + int ret; > + > + ret = device_register(&vdpasim_blk_mgmtdev); > + if (ret) > + return ret; > + > + ret = vdpa_mgmtdev_register(&mgmt_dev); > + if (ret) > + goto parent_err; > + > + return 0; > + > +parent_err: > + device_unregister(&vdpasim_blk_mgmtdev); > + return ret; > +} > + > +static void __exit vdpasim_blk_exit(void) > +{ > + vdpa_mgmtdev_unregister(&mgmt_dev); > + device_unregister(&vdpasim_blk_mgmtdev); > } > > module_init(vdpasim_blk_init)
WARNING: multiple messages have this Message-ID (diff)
From: Jason Wang <jasowang@redhat.com> To: Stefano Garzarella <sgarzare@redhat.com>, virtualization@lists.linux-foundation.org Cc: Laurent Vivier <lvivier@redhat.com>, Max Gurtovoy <mgurtovoy@nvidia.com>, kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Xie Yongji <xieyongji@bytedance.com>, Stefan Hajnoczi <stefanha@redhat.com> Subject: Re: [PATCH v4 14/14] vdpa_sim_blk: add support for vdpa management tool Date: Thu, 18 Mar 2021 11:31:54 +0800 [thread overview] Message-ID: <94bb9e5a-a1b9-2e0d-d5ec-c6a3eaebea88@redhat.com> (raw) In-Reply-To: <20210315163450.254396-15-sgarzare@redhat.com> 在 2021/3/16 上午12:34, Stefano Garzarella 写道: > Enable the user to create vDPA block simulator devices using the > vdpa management tool: > > # Show vDPA supported devices > $ vdpa mgmtdev show > vdpasim_blk: > supported_classes block > > # Create a vDPA block device named as 'blk0' from the management > # device vdpasim: > $ vdpa dev add mgmtdev vdpasim_blk name blk0 > > # Show the info of the 'blk0' device just created > $ vdpa dev show blk0 -jp > { > "dev": { > "blk0": { > "type": "block", > "mgmtdev": "vdpasim_blk", > "vendor_id": 0, > "max_vqs": 1, > "max_vq_size": 256 > } > } > } > > # Delete the vDPA device after its use > $ vdpa dev del blk0 > > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Acked-by: Jason Wang <jasowang@redhat.com> > --- > drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 76 +++++++++++++++++++++++----- > 1 file changed, 63 insertions(+), 13 deletions(-) > > diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c > index 643ae3bc62c0..5bfe1c281645 100644 > --- a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c > +++ b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c > @@ -37,7 +37,6 @@ > #define VDPASIM_BLK_SEG_MAX 32 > #define VDPASIM_BLK_VQ_NUM 1 > > -static struct vdpasim *vdpasim_blk_dev; > static char vdpasim_blk_id[VIRTIO_BLK_ID_BYTES] = "vdpa_blk_sim"; > > static bool vdpasim_blk_check_range(u64 start_sector, size_t range_size) > @@ -241,11 +240,23 @@ static void vdpasim_blk_get_config(struct vdpasim *vdpasim, void *config) > blk_config->blk_size = cpu_to_vdpasim32(vdpasim, SECTOR_SIZE); > } > > -static int __init vdpasim_blk_init(void) > +static void vdpasim_blk_mgmtdev_release(struct device *dev) > +{ > +} > + > +static struct device vdpasim_blk_mgmtdev = { > + .init_name = "vdpasim_blk", > + .release = vdpasim_blk_mgmtdev_release, > +}; > + > +static int vdpasim_blk_dev_add(struct vdpa_mgmt_dev *mdev, const char *name) > { > struct vdpasim_dev_attr dev_attr = {}; > + struct vdpasim *simdev; > int ret; > > + dev_attr.mgmt_dev = mdev; > + dev_attr.name = name; > dev_attr.id = VIRTIO_ID_BLOCK; > dev_attr.supported_features = VDPASIM_BLK_FEATURES; > dev_attr.nvqs = VDPASIM_BLK_VQ_NUM; > @@ -254,29 +265,68 @@ static int __init vdpasim_blk_init(void) > dev_attr.work_fn = vdpasim_blk_work; > dev_attr.buffer_size = VDPASIM_BLK_CAPACITY << SECTOR_SHIFT; > > - vdpasim_blk_dev = vdpasim_create(&dev_attr); > - if (IS_ERR(vdpasim_blk_dev)) { > - ret = PTR_ERR(vdpasim_blk_dev); > - goto out; > - } > + simdev = vdpasim_create(&dev_attr); > + if (IS_ERR(simdev)) > + return PTR_ERR(simdev); > > - ret = vdpa_register_device(&vdpasim_blk_dev->vdpa, VDPASIM_BLK_VQ_NUM); > + ret = _vdpa_register_device(&simdev->vdpa, VDPASIM_BLK_VQ_NUM); > if (ret) > goto put_dev; > > return 0; > > put_dev: > - put_device(&vdpasim_blk_dev->vdpa.dev); > -out: > + put_device(&simdev->vdpa.dev); > return ret; > } > > -static void __exit vdpasim_blk_exit(void) > +static void vdpasim_blk_dev_del(struct vdpa_mgmt_dev *mdev, > + struct vdpa_device *dev) > { > - struct vdpa_device *vdpa = &vdpasim_blk_dev->vdpa; > + struct vdpasim *simdev = container_of(dev, struct vdpasim, vdpa); > + > + _vdpa_unregister_device(&simdev->vdpa); > +} > + > +static const struct vdpa_mgmtdev_ops vdpasim_blk_mgmtdev_ops = { > + .dev_add = vdpasim_blk_dev_add, > + .dev_del = vdpasim_blk_dev_del > +}; > > - vdpa_unregister_device(vdpa); > +static struct virtio_device_id id_table[] = { > + { VIRTIO_ID_BLOCK, VIRTIO_DEV_ANY_ID }, > + { 0 }, > +}; > + > +static struct vdpa_mgmt_dev mgmt_dev = { > + .device = &vdpasim_blk_mgmtdev, > + .id_table = id_table, > + .ops = &vdpasim_blk_mgmtdev_ops, > +}; > + > +static int __init vdpasim_blk_init(void) > +{ > + int ret; > + > + ret = device_register(&vdpasim_blk_mgmtdev); > + if (ret) > + return ret; > + > + ret = vdpa_mgmtdev_register(&mgmt_dev); > + if (ret) > + goto parent_err; > + > + return 0; > + > +parent_err: > + device_unregister(&vdpasim_blk_mgmtdev); > + return ret; > +} > + > +static void __exit vdpasim_blk_exit(void) > +{ > + vdpa_mgmtdev_unregister(&mgmt_dev); > + device_unregister(&vdpasim_blk_mgmtdev); > } > > module_init(vdpasim_blk_init) _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2021-03-18 3:33 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-15 16:34 [PATCH v4 00/14] vdpa: add vdpa simulator for block device Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 01/14] vdpa_sim: use iova module to allocate IOVA addresses Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 02/14] vringh: add 'iotlb_lock' to synchronize iotlb accesses Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 03/14] vringh: reset kiov 'consumed' field in __vringh_iov() Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 04/14] vringh: explain more about cleaning riov and wiov Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 05/14] vringh: implement vringh_kiov_advance() Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 06/14] vringh: add vringh_kiov_length() helper Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:51 ` Laurent Vivier 2021-03-15 16:51 ` Laurent Vivier 2021-03-15 17:06 ` Stefano Garzarella 2021-03-15 17:06 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 07/14] vdpa_sim: cleanup kiovs in vdpasim_free() Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 08/14] vdpa: add get_config_size callback in vdpa_config_ops Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-18 3:21 ` Jason Wang 2021-03-18 3:21 ` Jason Wang 2021-03-15 16:34 ` [PATCH v4 09/14] vhost/vdpa: use get_config_size callback in vhost_vdpa_config_validate() Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-18 3:22 ` Jason Wang 2021-03-18 3:22 ` Jason Wang 2021-03-15 16:34 ` [PATCH v4 10/14] vhost/vdpa: Remove the restriction that only supports virtio-net devices Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-18 3:24 ` Jason Wang 2021-03-18 3:24 ` Jason Wang 2021-03-15 16:34 ` [PATCH v4 11/14] vdpa: add vdpa simulator for block device Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 12/14] vdpa_sim_blk: implement ramdisk behaviour Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 13/14] vdpa_sim_blk: handle VIRTIO_BLK_T_GET_ID Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-15 16:34 ` [PATCH v4 14/14] vdpa_sim_blk: add support for vdpa management tool Stefano Garzarella 2021-03-15 16:34 ` Stefano Garzarella 2021-03-18 3:31 ` Jason Wang [this message] 2021-03-18 3:31 ` Jason Wang 2021-04-12 8:18 ` [PATCH v4 00/14] vdpa: add vdpa simulator for block device Stefano Garzarella 2021-04-12 8:18 ` Stefano Garzarella
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=94bb9e5a-a1b9-2e0d-d5ec-c6a3eaebea88@redhat.com \ --to=jasowang@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=lvivier@redhat.com \ --cc=mgurtovoy@nvidia.com \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=parav@nvidia.com \ --cc=sgarzare@redhat.com \ --cc=stefanha@redhat.com \ --cc=virtualization@lists.linux-foundation.org \ --cc=xieyongji@bytedance.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.