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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).