From: "Marc-André Lureau" <marcandre.lureau@redhat.com>
To: Ladi Prosek <lprosek@redhat.com>
Cc: qemu-devel@nongnu.org, geoff@hostfission.com,
pbonzini@redhat.com, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 1/3] ivshmem: Don't update non-existent MSI routes
Date: Fri, 10 Nov 2017 13:10:46 -0500 (EST) [thread overview]
Message-ID: <868707299.39099859.1510337446693.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20171110173421.17904-2-lprosek@redhat.com>
----- Original Message -----
> As of commit 660c97eef6f8 ("ivshmem: use kvm irqfd for msi notifications"),
> QEMU crashes with:
>
> kvm_irqchip_commit_routes: Assertion `ret == 0' failed.
>
> if the ivshmem device is configured with more vectors than what the server
> supports. This is caused by the ivshmem_vector_unmask() being called on
> vectors that have not been initialized by ivshmem_add_kvm_msi_virq().
>
> This commit fixes it by adding a simple check to the mask and unmask
> callbacks.
>
> Note that the opposite mismatch, if the server supplies more vectors than
> what the device is configured for, is already handled and leads to output
> like:
>
> Too many eventfd received, device has 1 vectors
>
> Fixes: 660c97eef6f8 ("ivshmem: use kvm irqfd for msi notifications")
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> hw/misc/ivshmem.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index a5a46827fe..6e46669744 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -317,6 +317,10 @@ static int ivshmem_vector_unmask(PCIDevice *dev,
> unsigned vector,
> int ret;
>
> IVSHMEM_DPRINTF("vector unmask %p %d\n", dev, vector);
> + if (!v->pdev) {
> + error_report("ivshmem: vector %d route does not exist", vector);
> + return -EINVAL;
> + }
>
> ret = kvm_irqchip_update_msi_route(kvm_state, v->virq, msg, dev);
> if (ret < 0) {
> @@ -331,12 +335,16 @@ static void ivshmem_vector_mask(PCIDevice *dev,
> unsigned vector)
> {
> IVShmemState *s = IVSHMEM_COMMON(dev);
> EventNotifier *n = &s->peers[s->vm_id].eventfds[vector];
> + MSIVector *v = &s->msi_vectors[vector];
> int ret;
>
> IVSHMEM_DPRINTF("vector mask %p %d\n", dev, vector);
> + if (!v->pdev) {
> + error_report("ivshmem: vector %d route does not exist", vector);
> + return;
> + }
>
> - ret = kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, n,
> -
> s->msi_vectors[vector].virq);
> + ret = kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, n, v->virq);
> if (ret != 0) {
> error_report("remove_irqfd_notifier_gsi failed");
> }
> --
> 2.13.5
>
>
next prev parent reply other threads:[~2017-11-10 18:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-10 17:34 [Qemu-devel] [PATCH 0/3] ivshmem: MSI bug fixes Ladi Prosek
2017-11-10 17:34 ` [Qemu-devel] [PATCH 1/3] ivshmem: Don't update non-existent MSI routes Ladi Prosek
2017-11-10 18:10 ` Marc-André Lureau [this message]
2017-11-10 20:04 ` geoff
2017-11-13 14:22 ` Markus Armbruster
2017-11-13 14:38 ` Ladi Prosek
2017-11-13 17:26 ` Markus Armbruster
2017-11-10 17:34 ` [Qemu-devel] [PATCH 2/3] ivshmem: Always remove irqfd notifiers Ladi Prosek
2017-11-13 14:36 ` Markus Armbruster
2017-11-13 14:40 ` Ladi Prosek
2017-11-10 17:34 ` [Qemu-devel] [PATCH 3/3] ivshmem: Improve MSI irqfd error handling Ladi Prosek
2017-11-13 17:27 ` Markus Armbruster
2017-11-13 17:47 ` geoff
2017-11-14 7:37 ` Markus Armbruster
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=868707299.39099859.1510337446693.JavaMail.zimbra@redhat.com \
--to=marcandre.lureau@redhat.com \
--cc=armbru@redhat.com \
--cc=geoff@hostfission.com \
--cc=lprosek@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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.