[libvirt] [PATCH 9/9] qemu: Support virtio-mmio transport for virtio on ARM

Daniel P. Berrange berrange at redhat.com
Thu Aug 1 08:12:38 UTC 2013


On Wed, Jul 31, 2013 at 10:14:39PM -0400, Cole Robinson wrote:
> Starting with qemu 1.6, the qemu-system-arm vexpress-a9 model has a
> hardcoded virtio-mmio transport which enables attaching all virtio
> devices.
> 
> On the command line, we have to use virtio-XXX-device rather than
> virtio-XXX-pci, thankfully s390 already set the precedent here so
> it's fairly straight forward.
> 
> At the XML level, this adds a new device address type virtio-mmio.
> The controller and addressing don't have any subelements at the
> moment because we they aren't needed for this usecase, but could
> be added later if needed.
> 
> Add a test case for an ARM guest with one of every virtio device
> enabled.


> @@ -2814,17 +2816,19 @@ virQEMUCapsUsedQMP(virQEMUCapsPtr qemuCaps)
>  bool
>  virQEMUCapsSupportsChardev(virDomainDefPtr def,
>                             virQEMUCapsPtr qemuCaps,
> -                           virDomainChrDefPtr chr ATTRIBUTE_UNUSED)
> +                           virDomainChrDefPtr chr)
>  {
>      if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV) ||
>          !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
>          return false;
>  
> -    /* This may not be true for all machine types, but at least
> -     * the only supported serial devices of vexpress-a9 and versatilepb
> -     * don't have the chardev property wired up */
>      if (def->os.arch != VIR_ARCH_ARMV7L)
> -        return false;
> +        return true;
>  
> -    return true;
> +    /* This may not be true for all ARM machine types, but at least
> +     * the non-virtio serial devices of vexpress-a9 and versatilepb
> +     * don't have the chardev property wired up */
> +    return (chr->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO ||
> +            (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
> +             chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO));
>  }

Urgh. Now I see why you didn't just clear the CHARDEV capability
for ARM - it isn't a simple as blacklisting the whole architecture.
This is one of those times I really hate QEMU :-)

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list