]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Add PCI support for RISC-V guests
authorAndrea Bolognani <abologna@redhat.com>
Fri, 21 Sep 2018 13:29:38 +0000 (15:29 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Fri, 1 Feb 2019 10:57:50 +0000 (11:57 +0100)
virtio-mmio is still used by default, so if PCI is desired
it's necessary to explicitly opt-in by adding an appropriate

  <address type='pci' domain='0x0000' ... />

element to the corresponding device.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_domain.c
src/qemu/qemu_domain_address.c

index 5cf4b617c6b4137776dd1a5ad3b05b3df47353a1..1aec489263ef5ea234a5e4c74b4cd68d996e3c72 100644 (file)
@@ -1732,11 +1732,12 @@ bool virQEMUCapsHasPCIMultiBus(virQEMUCapsPtr qemuCaps,
     if (ARCH_IS_S390(def->os.arch))
         return true;
 
-    /* If ARM 'virt' supports PCI, it supports multibus.
-     * No extra conditions here for simplicity.
-     */
-    if (qemuDomainIsARMVirt(def))
+    /* If the virt machine, both on ARM and RISC-V, supports PCI,
+     * then it also supports multibus */
+    if (qemuDomainIsARMVirt(def) ||
+        qemuDomainIsRISCVVirt(def)) {
         return true;
+    }
 
     return false;
 }
index 5bfe4fe14e80f234d082783f93c0a913a39b971b..0b8e6fa011b601ae2c410e59eca5526f9c217bef 100644 (file)
@@ -3380,6 +3380,8 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def,
     case VIR_ARCH_RISCV32:
     case VIR_ARCH_RISCV64:
         addDefaultUSB = false;
+        if (qemuDomainIsRISCVVirt(def))
+            addPCIeRoot = virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_GPEX);
         break;
 
     case VIR_ARCH_S390:
index c376f3f897a6e5741faf4a26b5fa1d69c7df5486..c35ecd8585db7863477bdf4e477307afd0dbba58 100644 (file)
@@ -2369,7 +2369,8 @@ qemuDomainSupportsPCI(virDomainDefPtr def,
     if (STREQ(def->os.machine, "versatilepb"))
         return true;
 
-    if (qemuDomainIsARMVirt(def) &&
+    if ((qemuDomainIsARMVirt(def) ||
+         qemuDomainIsRISCVVirt(def)) &&
         virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_GPEX))
         return true;