Hi Cole,
     Long time no see~
     Thanks for giving help me about AArch64 of virtio-pci. You have rich experience about this,
I am green hand and seeking for your help again :-)

On 13 June 2016 at 06:21, Cole Robinson <crobinso@redhat.com> wrote:
On 06/12/2016 10:29 AM, Kevin Zhao wrote:
> Hi Cole && All,
>      Nice meeting you in the libvirt mail-list. Greetings from Linaro !!!
>      I am Kevin Zhao from Linaro and working for OpenStack on Aarch64.
> Nowadays I find that the default "virtio" bus is "virtio-mmio" , not
> "virtio-pci". Since virtio-mmio do not has the host plugged function ,
> something is wrong with the function in OpenStack Nova.
>
>       Then I search and find some mail information as belows by Cole :-)
>       1) https://www.redhat.com/archives/libvir-list/2015-December/msg00217.html
>       2) https://www.redhat.com/archives/libvir-list/2016-March/msg00167.html
>
>        I see some efforts have been doing by you. Really thanks for your
> efforts for Aarch64. And I have some small questions.
>       1. Is Libvirt planning to replace the default virtio-mmio to virtio-pci
> for Aarch64?

We have vague plans to maybe change the virtio-mmio default to virtio-pci at
some future point, based on some new enough qemu machine type. But the main
blocker is that most linux distributions currently don't work out of the box
with virtio-pci, at least Fedora doesn't as far as I know. So changing the
default now is pre-mature
>       2. If not , how can I change the xml file(generated by Virsh) for
> virtio-pci  so that Qemu can recognize it ?
>

The latest libvirt-1.3.5 release accepts device XML containing <address
type='pci'/> . The address block is an explicit request to libvirt to
'allocate a PCI address' rather than the default virtio-mmio. So for example
if you want to specify a virtio nic, but have it use virtio-pci rather than
virtio-mmio, you can do something like:

    <interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci'/>
    </interface>

I have changed the libvirt to 1.3.5 now, also add the pci to net-device xml like: 
 <address type='pci'/>,then use the virsh to boot the VM,the total xml file is:

After booting, the eth0 device disappear(eth0 occur when the address is virtio-mmio),
but I can find another net-device, also it can't work for dhcp: 
2: enp2s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:0d:25:26 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:fe0d:2526/64 scope link 
       valid_lft forever preferred_lft forever
Running lspci:
02:01.0 Ethernet controller: Red Hat, Inc Virtio network device

My question is: 
1. I use Debian 8 AArch64 as the Guest OS, do you think the virtio-pci for net-device works is OK ?

2. If I change the disk address-type to pci(Libvirt pass the virtio pci parameters to Qemu for disk device), but I can't boot 
the VM. Does Qemu not support virtio pci for  disk device in AArch64?

Big Big Thanks~

But there isn't currently any switch to say 'always give me virtio-pci instead
of virtio-mmio'

- Cole