All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.