qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: john fisher <1089006@bugs.launchpad.net>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Bug 1089006] Re: Qemu scrambles order of eth devices in vm
Date: Tue, 18 Dec 2012 22:37:25 -0000	[thread overview]
Message-ID: <50D0F025.10304@jpfisher.net> (raw)
In-Reply-To: 20121212195959.25882.72762.malone@gac.canonical.com

For the benefit of 1) others and 2) me when I forget how this works-

I did find a solution in formatting the xml file.

If you leave the vnets out completely, see file below,  the generic xml file will cooperate with libvirt and qemu and
order the VM's eth devices as they are ordered on the hypervisor.

(note: the macvtap entries seen below may also not be needed, sound and
usb not tested)

## sample xml file for libvirt 1.0.0 showing some bridges and some SRIOV
ports too ##

<domain type='kvm' id='1'>
  <name>sample</name>
  <hostname>sample</hostname>
  <memory unit='KiB'>524288</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/oa4-vm-sample-cli.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <source bridge='br4'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br5'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br6'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br7'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br8'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br9'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br10'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br11'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br250'/>
      <model type='virtio'/>
    </interface>
    <interface type='hostdev'>
      <source dev='eth0' mode='vepa'>
                  <address type='pci' domain='0x0000' bus='0x02' slot='0x10' function='0x0'/>
          </source>
      <target dev='macvtap1'/>
      <model type='virtio'/>   
    </interface>
    <interface type='hostdev'>
      <source dev='eth1' mode='vepa'>
                  <address type='pci' domain='0x0000' bus='0x02' slot='0x10' function='0x1'/>
          </source>
      <target dev='macvtap1'/>
      <model type='virtio'/>  
    </interface>
    <interface type='hostdev'>
      <source dev='eth2' mode='vepa'>
                  <address type='pci' domain='0x0000' bus='0x16' slot='0x10' function='0x0'/>
          </source>
      <target dev='macvtap0'/>    
    </interface>
        <interface type='hostdev'>
      <source dev='eth3' mode='vepa'>
                  <address type='pci' domain='0x0000' bus='0x16' slot='0x10' function='0x1'/>
          </source>
      <target dev='macvtap0'/>    
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/1'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>
    <sound model='ich6'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='none'/>
</domain>


On 12/12/2012 11:59 AM, john fisher wrote:
>
> Are we on the right track here, is there some way to control the order
> as presented by Qemu when the VM's OS boots?
>

-- 
John Fisher

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1089006

Title:
  Qemu scrambles order of eth devices in vm

Status in QEMU:
  New

Bug description:
  HV = 12.04 LTS plus libvirt 1.0x
  VM = 12.04 LTS

  On the HV there are 12 eth interfaces which we make available to the
  VM. We have 4 10G virtual function interfaces, and 8 1G conventionally
  bridged interfaces. No matter what order we present the interfaces in
  the xml file, they come up in eth0-eth11 order on the VM as follows:
  ( the interfcaes do work, once you figure out which is which)

  eth0-eth7 not in order as compoared to the bridges on the HV (interfaces file) or compared to the xml file for the VM, or compared to the bus numbers. MAC addresses are random.
  eth8-eth11 show up in the VM  in order of PCU bus numbers just as you'd expect, always after the bridged interfaces.

  Consulting the libvirt mailing list, the developer says they present
  the list in bus order to qemu, but qemu scrambles that order. That
  appears to me too, to be the case.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1089006/+subscriptions

  reply	other threads:[~2012-12-18 22:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-11 16:49 [Qemu-devel] [Bug 1089006] [NEW] Qemu scrambles order of eth devices in vm john fisher
2012-12-12 10:22 ` [Qemu-devel] [Bug 1089006] " Daniel Berrange
2012-12-12 19:59 ` john fisher
2012-12-18 22:37   ` john fisher [this message]
2017-07-11 19:53 ` Thomas Huth
2017-09-10  4:17 ` Launchpad Bug Tracker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50D0F025.10304@jpfisher.net \
    --to=1089006@bugs.launchpad.net \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).