On Tue, 2016-02-16 at 12:38 +0000, Daniel P. Berrange wrote:
> > Regardless of the way it is exposed in libvirt API, when
libvirt probes
> > for capabilities it will *always* use '-m none'.
>
> Domain capabilities are currently derived almost entirely from data
> taken from virQEMUCaps, but is there anything stopping us from
> calling QEMU with the appropriate machine type from
> qemuConnectGetDomainCapabilities() to query for machine type
> dependent domain capabilities such as supported values for the
> gic-version property?
The cost of invoking QEMU for each architecture and probing capabilities
is already higher than we would like. If we multiply that cost by the
number of machine types, it makes the problem orders of magnitude worse,
so we cannot go that route.
This is a key reason why we would like to be able to probe properties
against QEMU classses without instantiating them. ie so we can launch
QEMU once with "-m none" and still be able to query specific properties
we want from the 'virt' machine type. A small step towards this was
made with a patch we landed to let us register properties against
classes in QOM, instead of against objects. We've not done work to
convert code internally to use this facility yet though.
So, until such support lands in QEMU, is there really anything we
can do in libvirt beside passing through whatever value the user
has specified in the domain XML and report QEMU's error on failure?
I had underestimated the performance implications of spawning more
QEMU processes, thanks for highlighting them.
Cheers.
--
Andrea Bolognani
Software Engineer - Virtualization Team