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
next prev parent 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: 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.