All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
To: Jason Wang <jasowang@redhat.com>
Cc: tglx@linutronix.de, peterz@infradead.org, paulmck@kernel.org,
	maz@kernel.org, pasic@linux.ibm.com, cohuck@redhat.com,
	eperezma@redhat.com, lulu@redhat.com, sgarzare@redhat.com,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	linux-s390@vger.kernel.org, mst@redhat.com, jasowang@redhat.com,
	virtualization@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH V6 7/9] virtio: allow to unbreak virtqueue
Date: Fri, 27 May 2022 15:33:47 +0800	[thread overview]
Message-ID: <1653636827.6549792-6-xuanzhuo@linux.alibaba.com> (raw)
In-Reply-To: <20220527060120.20964-8-jasowang@redhat.com>

On Fri, 27 May 2022 14:01:18 +0800, Jason Wang <jasowang@redhat.com> wrote:
> This patch allows the new introduced __virtio_break_device() to
> unbreak the virtqueue.
>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: "Paul E. McKenney" <paulmck@kernel.org>
> Cc: Marc Zyngier <maz@kernel.org>
> Cc: Halil Pasic <pasic@linux.ibm.com>
> Cc: Cornelia Huck <cohuck@redhat.com>
> Cc: Vineeth Vijayan <vneethv@linux.ibm.com>
> Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
> Cc: linux-s390@vger.kernel.org
> Signed-off-by: Jason Wang <jasowang@redhat.com>

Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>

> ---
>  drivers/virtio/virtio_ring.c | 22 ++++++++++++++++++++++
>  include/linux/virtio.h       |  1 +
>  2 files changed, 23 insertions(+)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index 9d0bae4293be..9c231e1fded7 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -2395,6 +2395,28 @@ void virtio_break_device(struct virtio_device *dev)
>  }
>  EXPORT_SYMBOL_GPL(virtio_break_device);
>
> +/*
> + * This should allow the device to be used by the driver. You may
> + * need to grab appropriate locks to flush the write to
> + * vq->broken. This should only be used in some specific case e.g
> + * (probing and restoring). This function should only be called by the
> + * core, not directly by the driver.
> + */
> +void __virtio_unbreak_device(struct virtio_device *dev)
> +{
> +	struct virtqueue *_vq;
> +
> +	spin_lock(&dev->vqs_list_lock);
> +	list_for_each_entry(_vq, &dev->vqs, list) {
> +		struct vring_virtqueue *vq = to_vvq(_vq);
> +
> +		/* Pairs with READ_ONCE() in virtqueue_is_broken(). */
> +		WRITE_ONCE(vq->broken, false);
> +	}
> +	spin_unlock(&dev->vqs_list_lock);
> +}
> +EXPORT_SYMBOL_GPL(__virtio_unbreak_device);
> +
>  dma_addr_t virtqueue_get_desc_addr(struct virtqueue *_vq)
>  {
>  	struct vring_virtqueue *vq = to_vvq(_vq);
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 5464f398912a..d8fdf170637c 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -131,6 +131,7 @@ void unregister_virtio_device(struct virtio_device *dev);
>  bool is_virtio_device(struct device *dev);
>
>  void virtio_break_device(struct virtio_device *dev);
> +void __virtio_unbreak_device(struct virtio_device *dev);
>
>  void virtio_config_changed(struct virtio_device *dev);
>  #ifdef CONFIG_PM_SLEEP
> --
> 2.25.1
>

WARNING: multiple messages have this Message-ID (diff)
From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
To: Jason Wang <jasowang@redhat.com>
Cc: linux-s390@vger.kernel.org, lulu@redhat.com, paulmck@kernel.org,
	mst@redhat.com, peterz@infradead.org, maz@kernel.org,
	cohuck@redhat.com, Peter Oberparleiter <oberpar@linux.ibm.com>,
	virtualization@lists.linux-foundation.org, pasic@linux.ibm.com,
	eperezma@redhat.com, Vineeth Vijayan <vneethv@linux.ibm.com>,
	tglx@linutronix.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH V6 7/9] virtio: allow to unbreak virtqueue
Date: Fri, 27 May 2022 15:33:47 +0800	[thread overview]
Message-ID: <1653636827.6549792-6-xuanzhuo@linux.alibaba.com> (raw)
In-Reply-To: <20220527060120.20964-8-jasowang@redhat.com>

On Fri, 27 May 2022 14:01:18 +0800, Jason Wang <jasowang@redhat.com> wrote:
> This patch allows the new introduced __virtio_break_device() to
> unbreak the virtqueue.
>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: "Paul E. McKenney" <paulmck@kernel.org>
> Cc: Marc Zyngier <maz@kernel.org>
> Cc: Halil Pasic <pasic@linux.ibm.com>
> Cc: Cornelia Huck <cohuck@redhat.com>
> Cc: Vineeth Vijayan <vneethv@linux.ibm.com>
> Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
> Cc: linux-s390@vger.kernel.org
> Signed-off-by: Jason Wang <jasowang@redhat.com>

Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>

> ---
>  drivers/virtio/virtio_ring.c | 22 ++++++++++++++++++++++
>  include/linux/virtio.h       |  1 +
>  2 files changed, 23 insertions(+)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index 9d0bae4293be..9c231e1fded7 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -2395,6 +2395,28 @@ void virtio_break_device(struct virtio_device *dev)
>  }
>  EXPORT_SYMBOL_GPL(virtio_break_device);
>
> +/*
> + * This should allow the device to be used by the driver. You may
> + * need to grab appropriate locks to flush the write to
> + * vq->broken. This should only be used in some specific case e.g
> + * (probing and restoring). This function should only be called by the
> + * core, not directly by the driver.
> + */
> +void __virtio_unbreak_device(struct virtio_device *dev)
> +{
> +	struct virtqueue *_vq;
> +
> +	spin_lock(&dev->vqs_list_lock);
> +	list_for_each_entry(_vq, &dev->vqs, list) {
> +		struct vring_virtqueue *vq = to_vvq(_vq);
> +
> +		/* Pairs with READ_ONCE() in virtqueue_is_broken(). */
> +		WRITE_ONCE(vq->broken, false);
> +	}
> +	spin_unlock(&dev->vqs_list_lock);
> +}
> +EXPORT_SYMBOL_GPL(__virtio_unbreak_device);
> +
>  dma_addr_t virtqueue_get_desc_addr(struct virtqueue *_vq)
>  {
>  	struct vring_virtqueue *vq = to_vvq(_vq);
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 5464f398912a..d8fdf170637c 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -131,6 +131,7 @@ void unregister_virtio_device(struct virtio_device *dev);
>  bool is_virtio_device(struct device *dev);
>
>  void virtio_break_device(struct virtio_device *dev);
> +void __virtio_unbreak_device(struct virtio_device *dev);
>
>  void virtio_config_changed(struct virtio_device *dev);
>  #ifdef CONFIG_PM_SLEEP
> --
> 2.25.1
>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

  reply	other threads:[~2022-05-27  7:34 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-27  6:01 [PATCH V6 0/9] rework on the IRQ hardening of virtio Jason Wang
2022-05-27  6:01 ` Jason Wang
2022-05-27  6:01 ` [PATCH V6 1/9] virtio: use virtio_device_ready() in virtio_device_restore() Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:29   ` Xuan Zhuo
2022-05-27  7:29     ` Xuan Zhuo
2022-05-27  6:01 ` [PATCH V6 2/9] virtio: use virtio_reset_device() when possible Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:30   ` Xuan Zhuo
2022-05-27  7:30     ` Xuan Zhuo
2022-05-27  8:52   ` Eugenio Perez Martin
2022-05-27 10:34   ` Stefano Garzarella
2022-05-27 10:34     ` Stefano Garzarella
2022-05-27  6:01 ` [PATCH V6 3/9] virtio: introduce config op to synchronize vring callbacks Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:30   ` Xuan Zhuo
2022-05-27  7:30     ` Xuan Zhuo
2022-05-27 10:36   ` Stefano Garzarella
2022-05-27 10:36     ` Stefano Garzarella
2022-05-27  6:01 ` [PATCH V6 4/9] virtio-pci: implement synchronize_cbs() Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:31   ` Xuan Zhuo
2022-05-27  7:31     ` Xuan Zhuo
2022-05-27  6:01 ` [PATCH V6 5/9] virtio-mmio: " Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:32   ` Xuan Zhuo
2022-05-27  7:32     ` Xuan Zhuo
2022-05-27  6:01 ` [PATCH V6 6/9] virtio-ccw: " Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-30 15:12   ` Cornelia Huck
2022-05-30 15:12     ` Cornelia Huck
2022-05-27  6:01 ` [PATCH V6 7/9] virtio: allow to unbreak virtqueue Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:33   ` Xuan Zhuo [this message]
2022-05-27  7:33     ` Xuan Zhuo
2022-05-30 15:15   ` Cornelia Huck
2022-05-30 15:15     ` Cornelia Huck
2022-05-27  6:01 ` [PATCH V6 8/9] virtio: harden vring IRQ Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:49   ` Xuan Zhuo
2022-05-27  7:49     ` Xuan Zhuo
2022-05-30 15:18   ` Cornelia Huck
2022-05-30 15:18     ` Cornelia Huck
2022-06-11  5:12   ` Michael S. Tsirkin
2022-06-11  5:12     ` Michael S. Tsirkin
2022-06-13  5:26     ` Jason Wang
2022-06-13  5:26       ` Jason Wang
2022-06-13  7:23       ` Michael S. Tsirkin
2022-06-13  7:23         ` Michael S. Tsirkin
2022-06-13  8:07         ` Jason Wang
2022-06-13  8:07           ` Jason Wang
2022-06-13  8:19           ` Michael S. Tsirkin
2022-06-13  8:19             ` Michael S. Tsirkin
2022-06-13  8:51             ` Jason Wang
2022-06-13  8:51               ` Jason Wang
2022-06-13  8:59               ` Michael S. Tsirkin
2022-06-13  8:59                 ` Michael S. Tsirkin
2022-06-13  9:08                 ` Jason Wang
2022-06-13  9:08                   ` Jason Wang
2022-06-13  9:14                   ` Jason Wang
2022-06-13  9:14                     ` Jason Wang
2022-06-13  9:27                     ` Michael S. Tsirkin
2022-06-13  9:27                       ` Michael S. Tsirkin
2022-06-14  7:40                       ` Jason Wang
2022-06-14  7:40                         ` Jason Wang
2022-06-14 13:50                         ` Michael S. Tsirkin
2022-06-14 13:50                           ` Michael S. Tsirkin
2022-06-15  1:32                           ` Jason Wang
2022-06-15  1:32                             ` Jason Wang
2022-06-14 15:49                         ` Michael S. Tsirkin
2022-06-14 15:49                           ` Michael S. Tsirkin
2022-06-15  1:38                           ` Jason Wang
2022-06-15  1:38                             ` Jason Wang
2022-06-16 17:11                             ` Michael S. Tsirkin
2022-06-16 17:11                               ` Michael S. Tsirkin
2022-06-17  1:24                               ` Jason Wang
2022-06-17  1:24                                 ` Jason Wang
2022-06-17  5:36                                 ` Michael S. Tsirkin
2022-06-17  5:36                                   ` Michael S. Tsirkin
2022-06-17  7:26                                   ` Jason Wang
2022-06-17  7:26                                     ` Jason Wang
2022-06-17 14:33                                     ` Peter Zijlstra
2022-06-17 14:33                                       ` Peter Zijlstra
2022-06-14 16:46                         ` Cristian Marussi
2022-06-15  1:41                           ` Jason Wang
2022-06-15  1:41                             ` Jason Wang
2022-06-15 18:24                             ` Cristian Marussi
2022-06-17  3:14                               ` Jason Wang
2022-06-17  3:14                                 ` Jason Wang
2022-06-13  9:26                   ` Michael S. Tsirkin
2022-06-13  9:26                     ` Michael S. Tsirkin
2022-06-14  7:19                     ` Jason Wang
2022-06-14  7:19                       ` Jason Wang
2022-07-05 11:06   ` chenxiang (M)
2022-07-05 12:56     ` Jason Wang
2022-07-05 12:56       ` Jason Wang
2022-05-27  6:01 ` [PATCH V6 9/9] virtio: use WARN_ON() to warning illegal status value Jason Wang
2022-05-27  6:01   ` Jason Wang
2022-05-27  7:49   ` Xuan Zhuo
2022-05-27  7:49     ` Xuan Zhuo
2022-05-27 10:35   ` Stefano Garzarella
2022-05-27 10:35     ` Stefano Garzarella
2022-05-27 10:50   ` Michael S. Tsirkin
2022-05-27 10:50     ` Michael S. Tsirkin
2022-05-30  3:48     ` Jason Wang
2022-05-30  3:48       ` Jason Wang

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=1653636827.6549792-6-xuanzhuo@linux.alibaba.com \
    --to=xuanzhuo@linux.alibaba.com \
    --cc=cohuck@redhat.com \
    --cc=eperezma@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=lulu@redhat.com \
    --cc=maz@kernel.org \
    --cc=mst@redhat.com \
    --cc=oberpar@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sgarzare@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=vneethv@linux.ibm.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.