[libvirt] [PATCH v2 2/2] Allow PCI virtio on ARM "virt" machine

Pavel Fedin p.fedin at samsung.com
Thu Jun 11 06:40:54 UTC 2015


Signed-off-by: Pavel Fedin <p.fedin at samsung.com>
---
 src/qemu/qemu_command.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 0a6d92f..2acdc6a 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -457,7 +457,7 @@ qemuDomainSupportsNicdev(virDomainDefPtr def,
     /* non-virtio ARM nics require legacy -net nic */
     if (((def->os.arch == VIR_ARCH_ARMV7L) ||
         (def->os.arch == VIR_ARCH_AARCH64)) &&
-        net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO)
+        strcmp(net->model, "virtio"))
         return false;
 
     return true;
@@ -1375,8 +1375,9 @@ qemuDomainAssignARMVirtioMMIOAddresses(virDomainDefPtr def,
     if (((def->os.arch == VIR_ARCH_ARMV7L) ||
         (def->os.arch == VIR_ARCH_AARCH64)) &&
         (STRPREFIX(def->os.machine, "vexpress-") ||
-            STREQ(def->os.machine, "virt") ||
-            STRPREFIX(def->os.machine, "virt-")) &&
+            (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_ARM_VIRT_PCI) &&
+                (STREQ(def->os.machine, "virt") ||
+                 STRPREFIX(def->os.machine, "virt-")))) &&
         virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MMIO)) {
         qemuDomainPrimeVirtioDeviceAddresses(
             def, VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO);
@@ -2498,6 +2499,14 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
             VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW)
             continue;
 
+        /* ARM virt machine can also have virtio-mmio devices */
+        if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+            (def->os.arch == VIR_ARCH_AARCH64)) &&
+                (STREQ(def->os.machine, "virt") ||
+                STRPREFIX(def->os.machine, "virt-")) &&
+            def->disks[i]->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO)
+            continue;
+
         if (def->disks[i]->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("virtio disk cannot have an address of type '%s'"),
-- 
1.9.5.msysgit.0




More information about the libvir-list mailing list