On 06/11/2015 02:40 AM, Pavel Fedin wrote: > Signed-off-by: Pavel Fedin <p.fedin@xxxxxxxxxxx> > --- > 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'"), > We can't apply this without unit test additions. We will at least need a test for qemu 2.3+ defaulting to PCI, and a test to ensure that manually specified virtio-mmio continues to do the correct thing. I'll take a stab at it this week - Cole -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list