On 08/02/2013 02:49 AM, Gerd Hoffmann wrote:
Hi,
> qemu-kvm -M q35 -nodefaults -nodefconfig -qmp unix:/tmp/qemu,server
> -vnc :15 -vga std -usb
>
> Then ran "query-pci" in the qmp monitor and found that the vga device is
> put at slot 1 instead of slot 2.
>
> My questions:
>
> 1) Is this difference intentional, or a bug?
The vga simply goes into the first free slot. That happens to be #2
with i440fx and #1 with q35.
It sounds like it's a safe bet to assume that -vga will put the device
on slot 2 for pc machinetypes and slot 1 for q35, no matter what other
devices there are, since -vga is always initialized first. Correct? Do
you see any chance that might change in the future? (e.g. due to some
other new device that needs to be initialized even before vga)
> 2) If it's intentional, will the device always be at slot 1 (and trigger
> an error if something else is also placed at slot 1), or is it just
> picking the first unused slot? (that would *not* be good, because we
> must be able to predict what device is in which slot and prevent them
> from changing from run to run).
The vga is the very first (pci) device being created (when selecting via
-vga), so it gets the slots mentioned above no matter what, even though
simply picking the first unused slot.
> 3) Does the qxl multihead support really require that the device be at
> slot 2 (as stated in the above bugzilla commend)? Or is that just a
> misunderstanding/overstatement?
It's not required at all. The problem is that on older qemu versions
(pre-memory-api basically) it was impossible to create functional vga
devices via -device due to an initialization order issue. Which implies
you have to use -vga instead, which in turn implies the vga ends up in
slot #2. On i440fx, but q35 didn't exist yet back then ;)
Are you saying that it's still required to use -vga instead of -device
qxl-vga for pc machinetype? Or that it was needed at one time, but that
is no longer the case? If the latter, is there a reliable way to make
the decision whether or not we need to use -vga?