All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: virtualization@lists.linux.dev, jasowang@redhat.com,
	xuanzhuo@linux.alibaba.com, eperezma@redhat.com,
	parav@nvidia.com, feliu@nvidia.com, hengqi@linux.alibaba.com
Subject: Re: [PATCH virtio v2 06/19] virtio: convert find_vqs() op implementations to find_vqs_info()
Date: Fri, 5 Jul 2024 03:43:41 -0400	[thread overview]
Message-ID: <20240705034127-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20240704064350.1097716-7-jiri@resnulli.us>

This is the riskiest patch.
Jiri, I'd ask you to cross-build it before posting,
wasn't done here.

On Thu, Jul 04, 2024 at 08:43:37AM +0200, Jiri Pirko wrote:
> From: Jiri Pirko <jiri@nvidia.com>
> 
> Convert existing find_vqs() transport implementations
> to use find_vqs_info() config op.
> 
> Signed-off-by: Jiri Pirko <jiri@nvidia.com>
> ---
> v1->v2:
> - s/virtio_queue_info/virtqueue_info/
> ---
>  arch/um/drivers/virtio_uml.c             | 14 ++++++++------
>  drivers/platform/mellanox/mlxbf-tmfifo.c | 12 ++++++------
>  drivers/remoteproc/remoteproc_virtio.c   | 14 +++++++-------
>  drivers/s390/virtio/virtio_ccw.c         | 15 +++++++--------
>  drivers/virtio/virtio_mmio.c             | 14 +++++++-------
>  drivers/virtio/virtio_vdpa.c             | 15 +++++++--------
>  6 files changed, 42 insertions(+), 42 deletions(-)
> 
> diff --git a/arch/um/drivers/virtio_uml.c b/arch/um/drivers/virtio_uml.c
> index 77faa2cf3a13..c32a51017f9f 100644
> --- a/arch/um/drivers/virtio_uml.c
> +++ b/arch/um/drivers/virtio_uml.c
> @@ -1014,11 +1014,12 @@ static struct virtqueue *vu_setup_vq(struct virtio_device *vdev,
>  }
>  
>  static int vu_find_vqs(struct virtio_device *vdev, unsigned nvqs,
> -		       struct virtqueue *vqs[], vq_callback_t *callbacks[],
> -		       const char * const names[], const bool *ctx,
> +		       struct virtqueue *vqs[],
> +		       struct virtqueue_info vqs_info[],
>  		       struct irq_affinity *desc)
>  {
>  	struct virtio_uml_device *vu_dev = to_virtio_uml_device(vdev);
> +	struct virtqueue_info *vqi;
>  	int i, queue_idx = 0, rc;
>  	struct virtqueue *vq;
>  
> @@ -1031,13 +1032,14 @@ static int vu_find_vqs(struct virtio_device *vdev, unsigned nvqs,
>  		return rc;
>  
>  	for (i = 0; i < nvqs; ++i) {
> -		if (!names[i]) {
> +		vqi = &vqs_info[i];

vqi better declared here, it's unused outside the loop.
same elsewhere.

> +		if (!vqi->name) {
>  			vqs[i] = NULL;
>  			continue;
>  		}
>  
> -		vqs[i] = vu_setup_vq(vdev, queue_idx++, callbacks[i], names[i],
> -				     ctx ? ctx[i] : false);
> +		vqs[i] = vu_setup_vq(vdev, queue_idx++, vqi->callback,
> +				     vqi->name, vqi->ctx);
>  		if (IS_ERR(vqs[i])) {
>  			rc = PTR_ERR(vqs[i]);
>  			goto error_setup;
> @@ -1097,7 +1099,7 @@ static const struct virtio_config_ops virtio_uml_config_ops = {
>  	.get_status = vu_get_status,
>  	.set_status = vu_set_status,
>  	.reset = vu_reset,
> -	.find_vqs = vu_find_vqs,
> +	.find_vqs_info = vu_find_vqs,
>  	.del_vqs = vu_del_vqs,
>  	.get_features = vu_get_features,
>  	.finalize_features = vu_finalize_features,
> diff --git a/drivers/platform/mellanox/mlxbf-tmfifo.c b/drivers/platform/mellanox/mlxbf-tmfifo.c
> index b8d1e32e97eb..1497a5a0a68f 100644
> --- a/drivers/platform/mellanox/mlxbf-tmfifo.c
> +++ b/drivers/platform/mellanox/mlxbf-tmfifo.c
> @@ -1058,13 +1058,12 @@ static void mlxbf_tmfifo_virtio_del_vqs(struct virtio_device *vdev)
>  static int mlxbf_tmfifo_virtio_find_vqs(struct virtio_device *vdev,
>  					unsigned int nvqs,
>  					struct virtqueue *vqs[],
> -					vq_callback_t *callbacks[],
> -					const char * const names[],
> -					const bool *ctx,
> +					struct virtqueue_info vqs_info[],
>  					struct irq_affinity *desc)
>  {
>  	struct mlxbf_tmfifo_vdev *tm_vdev = mlxbf_vdev_to_tmfifo(vdev);
>  	struct mlxbf_tmfifo_vring *vring;
> +	struct virtqueue_info *vqi;
>  	struct virtqueue *vq;
>  	int i, ret, size;
>  
> @@ -1072,7 +1071,8 @@ static int mlxbf_tmfifo_virtio_find_vqs(struct virtio_device *vdev,
>  		return -EINVAL;
>  
>  	for (i = 0; i < nvqs; ++i) {
> -		if (!names[i]) {
> +		vqi = &vqs_info[i];
> +		if (!vqi->name) {
>  			ret = -EINVAL;
>  			goto error;
>  		}
> @@ -1084,7 +1084,7 @@ static int mlxbf_tmfifo_virtio_find_vqs(struct virtio_device *vdev,
>  		vq = vring_new_virtqueue(i, vring->num, vring->align, vdev,
>  					 false, false, vring->va,
>  					 mlxbf_tmfifo_virtio_notify,
> -					 callbacks[i], names[i]);
> +					 vqi->callback, vqi->name);
>  		if (!vq) {
>  			dev_err(&vdev->dev, "vring_new_virtqueue failed\n");
>  			ret = -ENOMEM;
> @@ -1175,7 +1175,7 @@ static void tmfifo_virtio_dev_release(struct device *device)
>  static const struct virtio_config_ops mlxbf_tmfifo_virtio_config_ops = {
>  	.get_features = mlxbf_tmfifo_virtio_get_features,
>  	.finalize_features = mlxbf_tmfifo_virtio_finalize_features,
> -	.find_vqs = mlxbf_tmfifo_virtio_find_vqs,
> +	.find_vqs_info = mlxbf_tmfifo_virtio_find_vqs,
>  	.del_vqs = mlxbf_tmfifo_virtio_del_vqs,
>  	.reset = mlxbf_tmfifo_virtio_reset,
>  	.set_status = mlxbf_tmfifo_virtio_set_status,
> diff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c
> index 25b66b113b69..a82a7c13bdc5 100644
> --- a/drivers/remoteproc/remoteproc_virtio.c
> +++ b/drivers/remoteproc/remoteproc_virtio.c
> @@ -182,21 +182,21 @@ static void rproc_virtio_del_vqs(struct virtio_device *vdev)
>  
>  static int rproc_virtio_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
>  				 struct virtqueue *vqs[],
> -				 vq_callback_t *callbacks[],
> -				 const char * const names[],
> -				 const bool * ctx,
> +				 struct virtqueue_info vqs_info[],
>  				 struct irq_affinity *desc)
>  {
> +	struct virtqueue_info *vqi;
>  	int i, ret, queue_idx = 0;
>  
>  	for (i = 0; i < nvqs; ++i) {
> -		if (!names[i]) {
> +		vqi = &vqs_info[i];
> +		if (!vqi->name) {
>  			vqs[i] = NULL;
>  			continue;
>  		}
>  
> -		vqs[i] = rp_find_vq(vdev, queue_idx++, callbacks[i], names[i],
> -				    ctx ? ctx[i] : false);
> +		vqs[i] = rp_find_vq(vdev, queue_idx++, vqi->callback,
> +				    vqi->name, vqi->ctx);
>  		if (IS_ERR(vqs[i])) {
>  			ret = PTR_ERR(vqs[i]);
>  			goto error;
> @@ -327,7 +327,7 @@ static void rproc_virtio_set(struct virtio_device *vdev, unsigned int offset,
>  static const struct virtio_config_ops rproc_virtio_config_ops = {
>  	.get_features	= rproc_virtio_get_features,
>  	.finalize_features = rproc_virtio_finalize_features,
> -	.find_vqs	= rproc_virtio_find_vqs,
> +	.find_vqs_info	= rproc_virtio_find_vqs,
>  	.del_vqs	= rproc_virtio_del_vqs,
>  	.reset		= rproc_virtio_reset,
>  	.set_status	= rproc_virtio_set_status,
> diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c
> index d6491fc84e8c..1f1fa70cf09d 100644
> --- a/drivers/s390/virtio/virtio_ccw.c
> +++ b/drivers/s390/virtio/virtio_ccw.c
> @@ -689,12 +689,11 @@ static int virtio_ccw_register_adapter_ind(struct virtio_ccw_device *vcdev,
>  
>  static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
>  			       struct virtqueue *vqs[],
> -			       vq_callback_t *callbacks[],
> -			       const char * const names[],
> -			       const bool *ctx,
> +			       struct virtqueue_info vqs_info[],
>  			       struct irq_affinity *desc)
>  {
>  	struct virtio_ccw_device *vcdev = to_vc_device(vdev);
> +	struct virtqueue_info *vqi;
>  	dma64_t *indicatorp = NULL;
>  	int ret, i, queue_idx = 0;
>  	struct ccw1 *ccw;
> @@ -705,14 +704,14 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
>  		return -ENOMEM;
>  
>  	for (i = 0; i < nvqs; ++i) {
> -		if (!names[i]) {
> +		vqi = &vqs_info[i];
> +		if (!vq_info->name) {

typo. we got lucky you didn't write vqs_info otherwise
it would build but not work correctly.


>  			vqs[i] = NULL;
>  			continue;
>  		}
>  
> -		vqs[i] = virtio_ccw_setup_vq(vdev, queue_idx++, callbacks[i],
> -					     names[i], ctx ? ctx[i] : false,
> -					     ccw);
> +		vqs[i] = virtio_ccw_setup_vq(vdev, queue_idx++, vqi->callback,
> +					     vqi->name, vqi->ctx, ccw);
>  		if (IS_ERR(vqs[i])) {
>  			ret = PTR_ERR(vqs[i]);
>  			vqs[i] = NULL;
> @@ -1079,7 +1078,7 @@ static const struct virtio_config_ops virtio_ccw_config_ops = {
>  	.get_status = virtio_ccw_get_status,
>  	.set_status = virtio_ccw_set_status,
>  	.reset = virtio_ccw_reset,
> -	.find_vqs = virtio_ccw_find_vqs,
> +	.find_vqs_info = virtio_ccw_find_vqs,
>  	.del_vqs = virtio_ccw_del_vqs,
>  	.bus_name = virtio_ccw_bus_name,
>  	.synchronize_cbs = virtio_ccw_synchronize_cbs,
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> index 173596589c71..533aca85b745 100644
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -489,13 +489,12 @@ static struct virtqueue *vm_setup_vq(struct virtio_device *vdev, unsigned int in
>  
>  static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
>  		       struct virtqueue *vqs[],
> -		       vq_callback_t *callbacks[],
> -		       const char * const names[],
> -		       const bool *ctx,
> +		       struct virtqueue_info vqs_info[],
>  		       struct irq_affinity *desc)
>  {
>  	struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
>  	int irq = platform_get_irq(vm_dev->pdev, 0);
> +	struct virtqueue_info *vqi;
>  	int i, err, queue_idx = 0;
>  
>  	if (irq < 0)
> @@ -510,13 +509,14 @@ static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
>  		enable_irq_wake(irq);
>  
>  	for (i = 0; i < nvqs; ++i) {
> -		if (!names[i]) {
> +		vqi = &vqs_info[i];
> +		if (!vqi->name) {
>  			vqs[i] = NULL;
>  			continue;
>  		}
>  
> -		vqs[i] = vm_setup_vq(vdev, queue_idx++, callbacks[i], names[i],
> -				     ctx ? ctx[i] : false);
> +		vqs[i] = vm_setup_vq(vdev, queue_idx++, vqi->callback,
> +				     vqi->name, vqi->ctx);
>  		if (IS_ERR(vqs[i])) {
>  			vm_del_vqs(vdev);
>  			return PTR_ERR(vqs[i]);
> @@ -570,7 +570,7 @@ static const struct virtio_config_ops virtio_mmio_config_ops = {
>  	.get_status	= vm_get_status,
>  	.set_status	= vm_set_status,
>  	.reset		= vm_reset,
> -	.find_vqs	= vm_find_vqs,
> +	.find_vqs_info	= vm_find_vqs,
>  	.del_vqs	= vm_del_vqs,
>  	.get_features	= vm_get_features,
>  	.finalize_features = vm_finalize_features,
> diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c
> index e803db0da307..dcf0c2b19a44 100644
> --- a/drivers/virtio/virtio_vdpa.c
> +++ b/drivers/virtio/virtio_vdpa.c
> @@ -358,15 +358,14 @@ create_affinity_masks(unsigned int nvecs, struct irq_affinity *affd)
>  
>  static int virtio_vdpa_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
>  				struct virtqueue *vqs[],
> -				vq_callback_t *callbacks[],
> -				const char * const names[],
> -				const bool *ctx,
> +				struct virtqueue_info vqs_info[],
>  				struct irq_affinity *desc)
>  {
>  	struct virtio_vdpa_device *vd_dev = to_virtio_vdpa_device(vdev);
>  	struct vdpa_device *vdpa = vd_get_vdpa(vdev);
>  	const struct vdpa_config_ops *ops = vdpa->config;
>  	struct irq_affinity default_affd = { 0 };
> +	struct virtqueue_info *vqi;
>  	struct cpumask *masks;
>  	struct vdpa_callback cb;
>  	bool has_affinity = desc && ops->set_vq_affinity;
> @@ -379,14 +378,14 @@ static int virtio_vdpa_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
>  	}
>  
>  	for (i = 0; i < nvqs; ++i) {
> -		if (!names[i]) {
> +		vqi = &vqs_info[i];
> +		if (!vqi->name) {
>  			vqs[i] = NULL;
>  			continue;
>  		}
>  
> -		vqs[i] = virtio_vdpa_setup_vq(vdev, queue_idx++,
> -					      callbacks[i], names[i], ctx ?
> -					      ctx[i] : false);
> +		vqs[i] = virtio_vdpa_setup_vq(vdev, queue_idx++, vqi->callback,
> +					      vqi->name, vqi->ctx);
>  		if (IS_ERR(vqs[i])) {
>  			err = PTR_ERR(vqs[i]);
>  			goto err_setup_vq;
> @@ -470,7 +469,7 @@ static const struct virtio_config_ops virtio_vdpa_config_ops = {
>  	.get_status	= virtio_vdpa_get_status,
>  	.set_status	= virtio_vdpa_set_status,
>  	.reset		= virtio_vdpa_reset,
> -	.find_vqs	= virtio_vdpa_find_vqs,
> +	.find_vqs_info	= virtio_vdpa_find_vqs,
>  	.del_vqs	= virtio_vdpa_del_vqs,
>  	.get_features	= virtio_vdpa_get_features,
>  	.finalize_features = virtio_vdpa_finalize_features,
> -- 
> 2.45.2


  reply	other threads:[~2024-07-05  7:43 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-04  6:43 [PATCH virtio v2 00/19] virtio: consolidate vq info args of find_vqs() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 01/19] caif_virtio: use virtio_find_single_vq() for single virtqueue finding Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 02/19] virtio: make virtio_find_vqs() call virtio_find_vqs_ctx() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 03/19] virtio: make virtio_find_single_vq() call virtio_find_vqs() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 04/19] virtio: introduce virtio_queue_info struct and find_vqs_info() config op Jiri Pirko
2024-07-04  7:47   ` Michael S. Tsirkin
2024-07-04  9:42     ` Jiri Pirko
2024-07-04 11:06     ` Jiri Pirko
2024-07-04 11:28       ` Michael S. Tsirkin
2024-07-04 13:00         ` Jiri Pirko
2024-07-04 14:17           ` Michael S. Tsirkin
2024-07-04  6:43 ` [PATCH virtio v2 05/19] virtio_pci: convert vp_*find_vqs() ops to find_vqs_info() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 06/19] virtio: convert find_vqs() op implementations " Jiri Pirko
2024-07-05  7:43   ` Michael S. Tsirkin [this message]
2024-07-08  7:26     ` Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 07/19] virtio: call virtio_find_vqs_info() from virtio_find_single_vq() directly Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 08/19] virtio: remove the original find_vqs() op Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 09/19] virtio: rename find_vqs_info() op to find_vqs() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 10/19] virtio_blk: convert to use virtio_find_vqs_info() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 11/19] virtio_console: " Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 12/19] virtio_crypto: " Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 13/19] virtio_net: " Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 14/19] scsi: virtio_scsi: " Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 15/19] virtiofs: " Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 16/19] virtio_balloon: " Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 17/19] virtio: convert the rest virtio_find_vqs() users to virtio_find_vqs_info() Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 18/19] virtio: remove unused virtio_find_vqs() and virtio_find_vqs_ctx() helpers Jiri Pirko
2024-07-04  6:43 ` [PATCH virtio v2 19/19] virtio: rename virtio_find_vqs_info() to virtio_find_vqs() Jiri Pirko
2024-07-04 11:33 ` [PATCH virtio v2 00/19] virtio: consolidate vq info args of find_vqs() Xuan Zhuo
2024-07-04 13:04   ` Jiri Pirko

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=20240705034127-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=eperezma@redhat.com \
    --cc=feliu@nvidia.com \
    --cc=hengqi@linux.alibaba.com \
    --cc=jasowang@redhat.com \
    --cc=jiri@resnulli.us \
    --cc=parav@nvidia.com \
    --cc=virtualization@lists.linux.dev \
    --cc=xuanzhuo@linux.alibaba.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.