All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: qemu-devel@nongnu.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Alex Williamson <alex.williamson@redhat.com>
Subject: [Qemu-devel] [PATCH qemu] vfio: Allow configuration without INTx
Date: Wed, 22 Nov 2017 16:16:49 +1100	[thread overview]
Message-ID: <20171122051649.3599-1-aik@ozlabs.ru> (raw)

On some platforms INTx may not be enabled on a KVM host (one such
example is IBM pHyp hypervisor and this is intentional). However
the PCI_INTERRUPT_PIN is not 0 so QEMU tries initializing INTx, fails as
(!vdev->pdev->irq) in the VFIO's vfio_intx_enable() and this is
a fatal error.

This adds a debug switch - "x-no-intx" - in order to allow broken INTx
configuration.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---

In practice, test teams run PR KVM under HV KVM and there INTx is enabled
on all levels so having this as a debug switch is enough.
---
 hw/vfio/pci.h | 1 +
 hw/vfio/pci.c | 8 +++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
index 502a575..c5e168e 100644
--- a/hw/vfio/pci.h
+++ b/hw/vfio/pci.h
@@ -141,6 +141,7 @@ typedef struct VFIOPCIDevice {
     bool has_flr;
     bool has_pm_reset;
     bool rom_read_failed;
+    bool no_intx;
     bool no_kvm_intx;
     bool no_kvm_msi;
     bool no_kvm_msix;
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index c977ee3..c9caf6a 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -2869,7 +2869,12 @@ static void vfio_realize(PCIDevice *pdev, Error **errp)
         pci_device_set_intx_routing_notifier(&vdev->pdev, vfio_intx_update);
         ret = vfio_intx_enable(vdev, errp);
         if (ret) {
-            goto out_teardown;
+            if (vdev->no_intx) {
+                error_report_err(*errp);
+                *errp = NULL;
+            } else {
+                goto out_teardown;
+            }
         }
     }
 
@@ -2986,6 +2991,7 @@ static Property vfio_pci_dev_properties[] = {
     DEFINE_PROP_BIT("x-igd-opregion", VFIOPCIDevice, features,
                     VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT, false),
     DEFINE_PROP_BOOL("x-no-mmap", VFIOPCIDevice, vbasedev.no_mmap, false),
+    DEFINE_PROP_BOOL("x-no-intx", VFIOPCIDevice, no_intx, false),
     DEFINE_PROP_BOOL("x-no-kvm-intx", VFIOPCIDevice, no_kvm_intx, false),
     DEFINE_PROP_BOOL("x-no-kvm-msi", VFIOPCIDevice, no_kvm_msi, false),
     DEFINE_PROP_BOOL("x-no-kvm-msix", VFIOPCIDevice, no_kvm_msix, false),
-- 
2.11.0

             reply	other threads:[~2017-11-22  5:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-22  5:16 Alexey Kardashevskiy [this message]
2017-11-22  5:44 ` [Qemu-devel] [PATCH qemu] vfio: Allow configuration without INTx no-reply
2017-11-29 15:33 ` Alex Williamson
2017-11-30  2:08   ` Alexey Kardashevskiy
2017-11-30 16:51     ` Alex Williamson

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=20171122051649.3599-1-aik@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=alex.williamson@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --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.