From: Cornelia Huck <cohuck@redhat.com>
To: Jason Wang <jasowang@redhat.com>,
mst@redhat.com, jasowang@redhat.com,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Cc: tglx@linutronix.de, peterz@infradead.org, paulmck@kernel.org,
maz@kernel.org, pasic@linux.ibm.com, eperezma@redhat.com,
lulu@redhat.com, sgarzare@redhat.com, xuanzhuo@linux.alibaba.com,
Vineeth Vijayan <vneethv@linux.ibm.com>,
Peter Oberparleiter <oberpar@linux.ibm.com>,
linux-s390@vger.kernel.org
Subject: Re: [PATCH V6 8/9] virtio: harden vring IRQ
Date: Mon, 30 May 2022 17:18:08 +0200 [thread overview]
Message-ID: <87sfort5fz.fsf@redhat.com> (raw)
In-Reply-To: <20220527060120.20964-9-jasowang@redhat.com>
On Fri, May 27 2022, Jason Wang <jasowang@redhat.com> wrote:
> This is a rework on the previous IRQ hardening that is done for
> virtio-pci where several drawbacks were found and were reverted:
>
> 1) try to use IRQF_NO_AUTOEN which is not friendly to affinity managed IRQ
> that is used by some device such as virtio-blk
> 2) done only for PCI transport
>
> The vq->broken is re-used in this patch for implementing the IRQ
> hardening. The vq->broken is set to true during both initialization
> and reset. And the vq->broken is set to false in
> virtio_device_ready(). Then vring_interrupt() can check and return
> when vq->broken is true. And in this case, switch to return IRQ_NONE
> to let the interrupt core aware of such invalid interrupt to prevent
> IRQ storm.
>
> The reason of using a per queue variable instead of a per device one
> is that we may need it for per queue reset hardening in the future.
>
> Note that the hardening is only done for vring interrupt since the
> config interrupt hardening is already done in commit 22b7050a024d7
> ("virtio: defer config changed notifications"). But the method that is
> used by config interrupt can't be reused by the vring interrupt
> handler because it uses spinlock to do the synchronization which is
> expensive.
>
> 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>
> ---
> drivers/s390/virtio/virtio_ccw.c | 4 ++++
> drivers/virtio/virtio.c | 15 ++++++++++++---
> drivers/virtio/virtio_mmio.c | 5 +++++
> drivers/virtio/virtio_pci_modern_dev.c | 5 +++++
> drivers/virtio/virtio_ring.c | 11 +++++++----
> include/linux/virtio_config.h | 20 ++++++++++++++++++++
> 6 files changed, 53 insertions(+), 7 deletions(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
WARNING: multiple messages have this Message-ID (diff)
From: Cornelia Huck <cohuck@redhat.com>
To: Jason Wang <jasowang@redhat.com>,
mst@redhat.com, jasowang@redhat.com,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Cc: lulu@redhat.com, paulmck@kernel.org, linux-s390@vger.kernel.org,
peterz@infradead.org, maz@kernel.org,
Peter Oberparleiter <oberpar@linux.ibm.com>,
pasic@linux.ibm.com, eperezma@redhat.com,
Vineeth Vijayan <vneethv@linux.ibm.com>,
tglx@linutronix.de
Subject: Re: [PATCH V6 8/9] virtio: harden vring IRQ
Date: Mon, 30 May 2022 17:18:08 +0200 [thread overview]
Message-ID: <87sfort5fz.fsf@redhat.com> (raw)
In-Reply-To: <20220527060120.20964-9-jasowang@redhat.com>
On Fri, May 27 2022, Jason Wang <jasowang@redhat.com> wrote:
> This is a rework on the previous IRQ hardening that is done for
> virtio-pci where several drawbacks were found and were reverted:
>
> 1) try to use IRQF_NO_AUTOEN which is not friendly to affinity managed IRQ
> that is used by some device such as virtio-blk
> 2) done only for PCI transport
>
> The vq->broken is re-used in this patch for implementing the IRQ
> hardening. The vq->broken is set to true during both initialization
> and reset. And the vq->broken is set to false in
> virtio_device_ready(). Then vring_interrupt() can check and return
> when vq->broken is true. And in this case, switch to return IRQ_NONE
> to let the interrupt core aware of such invalid interrupt to prevent
> IRQ storm.
>
> The reason of using a per queue variable instead of a per device one
> is that we may need it for per queue reset hardening in the future.
>
> Note that the hardening is only done for vring interrupt since the
> config interrupt hardening is already done in commit 22b7050a024d7
> ("virtio: defer config changed notifications"). But the method that is
> used by config interrupt can't be reused by the vring interrupt
> handler because it uses spinlock to do the synchronization which is
> expensive.
>
> 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>
> ---
> drivers/s390/virtio/virtio_ccw.c | 4 ++++
> drivers/virtio/virtio.c | 15 ++++++++++++---
> drivers/virtio/virtio_mmio.c | 5 +++++
> drivers/virtio/virtio_pci_modern_dev.c | 5 +++++
> drivers/virtio/virtio_ring.c | 11 +++++++----
> include/linux/virtio_config.h | 20 ++++++++++++++++++++
> 6 files changed, 53 insertions(+), 7 deletions(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-05-30 15:52 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
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 [this message]
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=87sfort5fz.fsf@redhat.com \
--to=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 \
--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.