From: Andrea Bolognani Date: Fri, 21 Sep 2018 13:29:38 +0000 (+0200) Subject: qemu: Add PCI support for RISC-V guests X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=e266a41f1e11eaeb8826d859c7e9d08fa3b1beef;p=libvirt.git qemu: Add PCI support for RISC-V guests virtio-mmio is still used by default, so if PCI is desired it's necessary to explicitly opt-in by adding an appropriate
element to the corresponding device. Signed-off-by: Andrea Bolognani Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5cf4b617c6..1aec489263 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -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; } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 5bfe4fe14e..0b8e6fa011 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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: diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index c376f3f897..c35ecd8585 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -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;