From: "Michael S. Tsirkin" <mst@redhat.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org
Subject: Re: [PATCH] virtio-pci: Remove affinity hint before freeing the interrupt
Date: Wed, 8 Mar 2017 15:28:13 +0200 [thread overview]
Message-ID: <20170308151940-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20170308080927.4493-1-marc.zyngier@arm.com>
On Wed, Mar 08, 2017 at 08:09:27AM +0000, Marc Zyngier wrote:
> virtio-pci registers a per-vq affinity hint when using MSIX,
> but fails to remove it when freeing the interrupt, resulting
> in this type of splat:
>
> [ 31.111202] WARNING: CPU: 0 PID: 2823 at kernel/irq/manage.c:1503 __free_irq+0x2c4/0x2c8
> [ 31.114689] Modules linked in:
> [ 31.116101] CPU: 0 PID: 2823 Comm: kexec Not tainted 4.10.0+ #6941
> [ 31.118911] Hardware name: Generic DT based system
> [ 31.121319] [<c022fb78>] (unwind_backtrace) from [<c0229d8c>] (show_stack+0x18/0x1c)
> [ 31.125017] [<c0229d8c>] (show_stack) from [<c05192f4>] (dump_stack+0x84/0x98)
> [ 31.128427] [<c05192f4>] (dump_stack) from [<c023d940>] (__warn+0xf4/0x10c)
> [ 31.131910] [<c023d940>] (__warn) from [<c023da20>] (warn_slowpath_null+0x28/0x30)
> [ 31.135543] [<c023da20>] (warn_slowpath_null) from [<c0290238>] (__free_irq+0x2c4/0x2c8)
> [ 31.139355] [<c0290238>] (__free_irq) from [<c02902d0>] (free_irq+0x44/0x78)
> [ 31.142909] [<c02902d0>] (free_irq) from [<c059d3a8>] (vp_del_vqs+0x68/0x1c0)
> [ 31.146299] [<c059d3a8>] (vp_del_vqs) from [<c056ca4c>] (pci_device_shutdown+0x3c/0x78)
>
> The obvious fix is to drop the affinity hint before freeing the
> interrupt.
>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Is this introduced by the changes in latest rc?
> ---
> drivers/virtio/virtio_pci_common.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c
> index df548a6fb844..5a84f8207c02 100644
> --- a/drivers/virtio/virtio_pci_common.c
> +++ b/drivers/virtio/virtio_pci_common.c
> @@ -106,9 +106,12 @@ static void vp_remove_vqs(struct virtio_device *vdev)
> if (vp_dev->msix_vector_map) {
> int v = vp_dev->msix_vector_map[vq->index];
>
> - if (v != VIRTIO_MSI_NO_VECTOR)
> - free_irq(pci_irq_vector(vp_dev->pci_dev, v),
> - vq);
> + if (v != VIRTIO_MSI_NO_VECTOR) {
> + unsigned int irq;
> + irq = pci_irq_vector(vp_dev->pci_dev, v);
> + irq_set_affinity_hint(irq, NULL);
> + free_irq(irq, vq);
> + }
> }
> vp_dev->del_vq(vq);
> }
> --
> 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Jason Wang <jasowang@redhat.com>,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] virtio-pci: Remove affinity hint before freeing the interrupt
Date: Wed, 8 Mar 2017 15:28:13 +0200 [thread overview]
Message-ID: <20170308151940-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20170308080927.4493-1-marc.zyngier@arm.com>
On Wed, Mar 08, 2017 at 08:09:27AM +0000, Marc Zyngier wrote:
> virtio-pci registers a per-vq affinity hint when using MSIX,
> but fails to remove it when freeing the interrupt, resulting
> in this type of splat:
>
> [ 31.111202] WARNING: CPU: 0 PID: 2823 at kernel/irq/manage.c:1503 __free_irq+0x2c4/0x2c8
> [ 31.114689] Modules linked in:
> [ 31.116101] CPU: 0 PID: 2823 Comm: kexec Not tainted 4.10.0+ #6941
> [ 31.118911] Hardware name: Generic DT based system
> [ 31.121319] [<c022fb78>] (unwind_backtrace) from [<c0229d8c>] (show_stack+0x18/0x1c)
> [ 31.125017] [<c0229d8c>] (show_stack) from [<c05192f4>] (dump_stack+0x84/0x98)
> [ 31.128427] [<c05192f4>] (dump_stack) from [<c023d940>] (__warn+0xf4/0x10c)
> [ 31.131910] [<c023d940>] (__warn) from [<c023da20>] (warn_slowpath_null+0x28/0x30)
> [ 31.135543] [<c023da20>] (warn_slowpath_null) from [<c0290238>] (__free_irq+0x2c4/0x2c8)
> [ 31.139355] [<c0290238>] (__free_irq) from [<c02902d0>] (free_irq+0x44/0x78)
> [ 31.142909] [<c02902d0>] (free_irq) from [<c059d3a8>] (vp_del_vqs+0x68/0x1c0)
> [ 31.146299] [<c059d3a8>] (vp_del_vqs) from [<c056ca4c>] (pci_device_shutdown+0x3c/0x78)
>
> The obvious fix is to drop the affinity hint before freeing the
> interrupt.
>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Is this introduced by the changes in latest rc?
> ---
> drivers/virtio/virtio_pci_common.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c
> index df548a6fb844..5a84f8207c02 100644
> --- a/drivers/virtio/virtio_pci_common.c
> +++ b/drivers/virtio/virtio_pci_common.c
> @@ -106,9 +106,12 @@ static void vp_remove_vqs(struct virtio_device *vdev)
> if (vp_dev->msix_vector_map) {
> int v = vp_dev->msix_vector_map[vq->index];
>
> - if (v != VIRTIO_MSI_NO_VECTOR)
> - free_irq(pci_irq_vector(vp_dev->pci_dev, v),
> - vq);
> + if (v != VIRTIO_MSI_NO_VECTOR) {
> + unsigned int irq;
> + irq = pci_irq_vector(vp_dev->pci_dev, v);
> + irq_set_affinity_hint(irq, NULL);
> + free_irq(irq, vq);
> + }
> }
> vp_dev->del_vq(vq);
> }
> --
> 2.11.0
next prev parent reply other threads:[~2017-03-08 13:28 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-08 8:09 [PATCH] virtio-pci: Remove affinity hint before freeing the interrupt Marc Zyngier
2017-03-08 8:09 ` Marc Zyngier
2017-03-08 10:16 ` Jason Wang
2017-03-08 10:16 ` Jason Wang
2017-03-08 13:28 ` Michael S. Tsirkin [this message]
2017-03-08 13:28 ` Michael S. Tsirkin
2017-03-08 14:03 ` Marc Zyngier
2017-03-08 14:03 ` Marc Zyngier
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=20170308151940-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=virtualization@lists.linux-foundation.org \
/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.