On 02/17/2013 11:50 AM, Alon Levy wrote:
Hi Martin,
> On 02/04/2013 04:16 PM, Christophe Fergeau wrote:
>> QXL devices have an associated 'revision' which is raised when
>> new features have been introduced which would break migration
>> to older versions. This commit makes it possible to set this
>> revision as QEMU sometimes support newer QXL revisions than what
>> it defaults to.
>
> This could help a lot, but few questions, if I may:
> - This only helps when the revision is specified, otherwise not,
> right?
If by "helps" you mean "changes the revision", then it's a bit
more complex - the revision is determined by order of precedence by the following:
default
machine type (i.e. via -M)
global (which this patch sets)
Even though this is not the root cause neither the place we want to fix
it; so the theoretical migration problem occurs because the machine type
doesn't specify the revision, right? Just asking to make sure I understand.
> - Isn't there a way how to get the current supported
(running)
> revision
> of QEMU's qxl video?
>
> If we don't know the current (and supported) revision, we are
> exposing a
> parameter we know completely nothing about and thus can only try to
> start qemu with it and wait if it initializes (I know that's how we
> do
> it with devices, but there's no other option). Transferring current
> revision during migration (even when unspecified) would help
> determining
> such errors before starting QEMU on destination.
>
> There's not much info about the revisions if you don't look in QEMU
> sources, so I'm not sure what our possibilities are. It's a good
> thing
> that the 'revision' parameter is supported since the same commit as
> qxl
> driver, though.
There is no "introspection" from the help, sorry. So like you said the only
way to know what supported revisions are is to:
1) start a vm with -vga qxl as stopped, query the revision of the qxl device, you get R,
then [1..R] are supported (i.e. inclusive)
This could be pretty doable. We already query some information from
qemu, although not device-relevant. I have to look in the code, but
good to know it is gettable from the monitor. Maybe we can run the
initial '-M none' with '-vga qxl' or '-device qxl-[vga]' to get
the
revision.
2) to find out which higher revisions are supported, you'll have
to start with each successive higher revision until you get an error code (you can wait
for the machine start event, that is sent after all devices are initialized)
Of course we can fix qemu to report it now, but it won't help for any of the older
versions..
Thanks for the info,
Martin