<html style="direction: ltr;">
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <style>body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
  </head>
  <body style="direction: ltr;"
    bidimailui-detected-decoding-type="UTF-8" text="#000000"
    bgcolor="#FFFFFF">
    <div id="IDstID">
      <p>Thanks. But i didn't add 3 video card! why there is 3 video
        card?is it bug? <br>
      </p>
      <p>can you please explain more about how can i fix this problem? i
        must go to the database and then i leave the address as is? i
        don't understand last your sentence. <br>
      </p>
      Thanks for you attention. <br>
      <br>
      <style type="text/css">blockquote { /*Tue, 05 Jun 2012 10:01:00 -0400 (EDT)*/ color: navy !important; background-color: RGB(245,245,245) !important; padding: 0 15 10 15 !important; margin: 15 0 0 0; border-left: #1010ff 2px solid;}blockquote blockquote { /*Tue, 05 Jun 2012 10:01:00 -0400 (EDT)*/ color: maroon !important; background-color: RGB(235,235,235) !important; border-left-color:maroon !important}blockquote blockquote blockquote { /*Tue, 05 Jun 2012 10:01:00 -0400 (EDT)*/ color: green !important; background-color: RGB(225,225,225) !important; border-left-color:teal !important}blockquote blockquote blockquote blockquote { /*Tue, 05 Jun 2012 10:01:00 -0400 (EDT)*/ color: purple !important; background-color: RGB(215,215,215) !important; border-left-color: purple !important}blockquote blockquote blockquote blockquote blockquote { /*Tue, 05 Jun 2012 10:01:00 -0400 (EDT)*/ color: teal !important; background-color: RGB(205,205,205) !important; border-left-color: green !important}
</style><i><b>Oved
          Ourfalli <a class="moz-txt-link-rfc2396E" href="mailto:ovedo@redhat.com">&lt;ovedo@redhat.com&gt;</a></b></i> wrote on Tue, 05 Jun
      2012 10:01:00 -0400 (EDT):</div>
    <blockquote
cite="mid:cc4dbcfa-97f3-48fd-a563-ae3c3371ca44@zmail02.collab.prod.int.phx2.redhat.com"
      type="cite">
      <pre wrap="">

----- Original Message -----
</pre>
      <blockquote type="cite">
        <pre wrap="">From: "Mohsen Saeedi" <a class="moz-txt-link-rfc2396E" href="mailto:mohsen.saeedi@gmail.com">&lt;mohsen.saeedi@gmail.com&gt;</a>
To: "Oved Ourfalli" <a class="moz-txt-link-rfc2396E" href="mailto:ovedo@redhat.com">&lt;ovedo@redhat.com&gt;</a>
Cc: <a class="moz-txt-link-abbreviated" href="mailto:users@ovirt.org">users@ovirt.org</a>
Sent: Tuesday, June 5, 2012 4:42:09 PM
Subject: Re: [Users] Ovirt - double use of PCI Address



/*Oved Ourfalli <a class="moz-txt-link-rfc2396E" href="mailto:ovedo@redhat.com">&lt;ovedo@redhat.com&gt;</a>*/ wrote on Tue, 05 Jun 2012
09:29:19
-0400 (EDT):
</pre>
        <blockquote type="cite">
          <pre wrap="">
----- Original Message -----
</pre>
          <blockquote type="cite">
            <pre wrap="">From: "Mohsen Saeedi"<a class="moz-txt-link-rfc2396E" href="mailto:mohsen.saeedi@gmail.com">&lt;mohsen.saeedi@gmail.com&gt;</a>
To: <a class="moz-txt-link-abbreviated" href="mailto:users@ovirt.org">users@ovirt.org</a>
Sent: Tuesday, June 5, 2012 4:24:46 PM
Subject: [Users] Ovirt - double use of PCI Address





Hi

I setup ovirt and some other things. I make a virtual machine
(CentOS
6.2). installed and configured it. then power off it and make a
snapshot and create clone image from it.

when i trying to start new machine, i got this error:

2012-06-05 13:16:15.433+0000: 2375: error :
qemuCollectPCIAddress:743
: XML error: Attempted double use of PCI Address '0:0:2.0'

I remove the new machine and try to start old machine. i get the
error again! and i'm enable to start old machine.

</pre>
          </blockquote>
          <pre wrap="">Can you please attach the engine.log and vdsm.log files?
</pre>
        </blockquote>
        <pre wrap="">Yes, I attached both of them.
</pre>
        <blockquote type="cite">
          <pre wrap="">Are you working with the most updated upstream code?
</pre>
        </blockquote>
        <pre wrap="">I'm working with build from git -
faef6297b0d01203e88040b2707f9abfbd754d3f. more information is
available
here:
<a class="moz-txt-link-freetext" href="http://www.dreyou.org/ovirt/">http://www.dreyou.org/ovirt/</a>
</pre>
      </blockquote>
      <pre wrap="">
You can see the issue in vdsm.log file. You have 3 video cards, all on the same address.

                &lt;video&gt;
                        &lt;address  domain="0x0000"  function="0x0"  slot="0x02"  type="pci" bus="0x00"/&gt;
                        &lt;model heads="1" type="qxl" vram="65536"/&gt;
                &lt;/video&gt;
                &lt;video&gt;
                        &lt;address  domain="0x0000"  function="0x0"  slot="0x02"  type="pci" bus="0x00"/&gt;
                        &lt;model heads="1" type="qxl" vram="65536"/&gt;
                &lt;/video&gt;
                &lt;video&gt;
                        &lt;address  domain="0x0000"  function="0x0"  slot="0x02"  type="pci" bus="0x00"/&gt;
                        &lt;model heads="1" type="qxl" vram="65536"/&gt;
                &lt;/video&gt;

Looking at the vdsm code (in vdsm/libvirtvm.py), you can see why such a thing might happen (also look at the FIXME comment :-) ).

            # FIXME. We have an identification problem here.
            # Video card device has not unique identifier, except the alias
            # (but backend not aware to device's aliases).
            # So, for now we can only assign the address according to devices order.
            for vc in self._devices[vm.VIDEO_DEVICES]:
                if not hasattr(vc, 'address') or not hasattr(vc, 'alias'):
                    vc.alias = alias
                    vc.address = address
                    break
            # Update vm's conf with address
            for dev in self.conf['devices']:
                if (dev['type'] == vm.VIDEO_DEVICES) and \
                   (not dev.get('address') or not dev.get('alias')):
                    dev['address'] = address
                    dev['alias'] = alias
                    break

The code above is responsible to return the engine core the device addresses, after libvirt executes the VM, so that they will be persistent, and used in future executions of the VM.

Now, the engine core is aware of the alias (as of the exact commit you used :-) ), but the first time you run the VM, you can get the addresses wrong, as the alias isn't taken into account.

Would you like to try to fix this issue? The fix will be to make a better logic in the code above. Similar examples can be found in this file, for example in the section that does the same for controllers.

If not, let me know and I'll go ahead and fix that.

In the meantime, you can workaround this issue by going to the vm_device table, identifying these three devices, leave the address as is for the first video card of your VM (you probably have video0/1/2 as aliases), and try to run the VM again.
Now, the engine will pass the one with the correct address as the first, and libvirt will allocate the right addresses to the other two.
Hopefully this will be enough.

Oved
</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">
We had an issue with the monitors, in which the order of the
monitor devices is important, as the first one needs to get the
address 0:0:2.0, but that issue was fixed.
Are you using more than one monitor?
</pre>
        </blockquote>
        <pre wrap="">No, I'm using spice or vnc just for getting graphic.
</pre>
        <blockquote type="cite">
          <pre wrap="">
The vdsm.log fill will help a lot here, as it contains the VM's
domain XML file, which will show us all the devices we send
libvirt, and all the addresses that the engine expects to get from
it.


</pre>
          <blockquote type="cite">
            <pre wrap="">

Any idea?

Thanks.


_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@ovirt.org">Users@ovirt.org</a>
<a class="moz-txt-link-freetext" href="http://lists.ovirt.org/mailman/listinfo/users">http://lists.ovirt.org/mailman/listinfo/users</a>

</pre>
          </blockquote>
        </blockquote>
        <pre wrap="">
_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@ovirt.org">Users@ovirt.org</a>
<a class="moz-txt-link-freetext" href="http://lists.ovirt.org/mailman/listinfo/users">http://lists.ovirt.org/mailman/listinfo/users</a>

</pre>
      </blockquote>
    </blockquote>
  </body>
</html>