All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: qemu-devel@nongnu.org
Cc: borntraeger@de.ibm.com, agraf@suse.de, thuth@redhat.com,
	david@redhat.com, pmorel@linux.vnet.ibm.com,
	zyimin@linux.vnet.ibm.com, pasic@linux.vnet.ibm.com,
	Cornelia Huck <cohuck@redhat.com>
Subject: [Qemu-devel] [PATCH v5 2/9] kvm: remove hard dependency on pci
Date: Wed, 23 Aug 2017 17:54:51 +0200	[thread overview]
Message-ID: <20170823155458.19601-3-cohuck@redhat.com> (raw)
In-Reply-To: <20170823155458.19601-1-cohuck@redhat.com>

The msi routing code in kvm calls some pci functions: provide
some stubs to enable builds without pci.

Also, to make this more obvious, guard them via a pci_available boolean
(which also can be reused in other places).

Fixes: e1d4fb2de ("kvm-irqchip: x86: add msi route notify fn")
Fixes: 767a554a0 ("kvm-all: Pass requester ID to MSI routing functions")
Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
 accel/kvm/kvm-all.c  |  6 +++---
 hw/pci/pci-stub.c    | 16 +++++++++++++++-
 hw/pci/pci.c         |  2 ++
 include/hw/pci/pci.h |  2 ++
 4 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 46ce479dc3..f85553a851 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1248,7 +1248,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
     int virq;
     MSIMessage msg = {0, 0};
 
-    if (dev) {
+    if (pci_available && dev) {
         msg = pci_get_msi_message(dev, vector);
     }
 
@@ -1271,7 +1271,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
     kroute.u.msi.address_lo = (uint32_t)msg.address;
     kroute.u.msi.address_hi = msg.address >> 32;
     kroute.u.msi.data = le32_to_cpu(msg.data);
-    if (kvm_msi_devid_required()) {
+    if (pci_available && kvm_msi_devid_required()) {
         kroute.flags = KVM_MSI_VALID_DEVID;
         kroute.u.msi.devid = pci_requester_id(dev);
     }
@@ -1309,7 +1309,7 @@ int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg,
     kroute.u.msi.address_lo = (uint32_t)msg.address;
     kroute.u.msi.address_hi = msg.address >> 32;
     kroute.u.msi.data = le32_to_cpu(msg.data);
-    if (kvm_msi_devid_required()) {
+    if (pci_available && kvm_msi_devid_required()) {
         kroute.flags = KVM_MSI_VALID_DEVID;
         kroute.u.msi.devid = pci_requester_id(dev);
     }
diff --git a/hw/pci/pci-stub.c b/hw/pci/pci-stub.c
index ecad664946..2d3b32c6ab 100644
--- a/hw/pci/pci-stub.c
+++ b/hw/pci/pci-stub.c
@@ -23,10 +23,11 @@
 #include "monitor/monitor.h"
 #include "qapi/qmp/qerror.h"
 #include "hw/pci/pci.h"
-#include "qmp-commands.h"
 #include "hw/pci/msi.h"
+#include "qmp-commands.h"
 
 bool msi_nonbroken;
+bool pci_available;
 
 PciInfoList *qmp_query_pci(Error **errp)
 {
@@ -38,3 +39,16 @@ void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict)
 {
     monitor_printf(mon, "PCI devices not supported\n");
 }
+
+/* kvm-all wants this */
+MSIMessage pci_get_msi_message(PCIDevice *dev, int vector)
+{
+    g_assert(false);
+    return (MSIMessage){};
+}
+
+uint16_t pci_requester_id(PCIDevice *dev)
+{
+    g_assert(false);
+    return 0;
+}
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 258fbe51e2..26f346db2c 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -49,6 +49,8 @@
 # define PCI_DPRINTF(format, ...)       do { } while (0)
 #endif
 
+bool pci_available = true;
+
 static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
 static char *pcibus_get_dev_path(DeviceState *dev);
 static char *pcibus_get_fw_dev_path(DeviceState *dev);
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index e598b095eb..8bb6449dd7 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -10,6 +10,8 @@
 
 #include "hw/pci/pcie.h"
 
+extern bool pci_available;
+
 /* PCI bus */
 
 #define PCI_DEVFN(slot, func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
-- 
2.13.5

  parent reply	other threads:[~2017-08-23 15:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-23 15:54 [Qemu-devel] [PATCH v5 0/9] zpci detangling Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 1/9] 9pfs: fix dependencies Cornelia Huck
2017-08-23 15:54 ` Cornelia Huck [this message]
2017-08-24  1:13   ` [Qemu-devel] [PATCH v5 2/9] kvm: remove hard dependency on pci Thomas Huth
2017-08-24  8:35     ` Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 3/9] s390x/pci: add stubs Cornelia Huck
2017-08-24  7:38   ` Christian Borntraeger
2017-08-24  7:43     ` Christian Borntraeger
2017-08-24  9:09       ` Cornelia Huck
2017-08-24  9:50         ` Halil Pasic
2017-08-24  9:58           ` Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 4/9] s390x: chsc nt2 events are pci-only Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 5/9] s390x/pci: do not advertise pci on non-pci builds Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 6/9] s390x/ccw: create s390 phb conditionally Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 7/9] s390x/sclp: properly guard pci-specific functions Cornelia Huck
2017-08-23 16:25   ` Pierre Morel
2017-08-24  8:31     ` Cornelia Huck
2017-08-24  9:29   ` Halil Pasic
2017-08-24  9:33     ` Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 8/9] s390x/pci: fence off instructions for non-pci Cornelia Huck
2017-08-23 15:54 ` [Qemu-devel] [PATCH v5 9/9] s390x: refine pci dependencies Cornelia Huck
2017-08-24  7:49 ` [Qemu-devel] [PATCH v5 0/9] zpci detangling Christian Borntraeger
2017-08-24 11:12   ` Cornelia Huck

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=20170823155458.19601-3-cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=david@redhat.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=zyimin@linux.vnet.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: 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.