On Fri, Jan 31, 2014 at 08:18:39PM +0100, Igor Mammedov wrote:
On Fri, 31 Jan 2014 11:56:18 -0700
Eric Blake <eblake(a)redhat.com> wrote:
> On 01/31/2014 11:51 AM, Eduardo Habkost wrote:
>
> >> Allowing -device may be okay, since in the (very?) long term -device
> >> can be replaced by -object. But -object is definitive.
> >
> > OK, one additional reason to try device_add first.
> >
> > But then we have one additional problem:
> >
> > * We want to allow libvirt to probe for CPU model information when
> > running QEMU using "-machine none" (because libvirt already does
> > that, and we don't want to require libvirt to run QEMU multiple
> > times)
> > * "device_add driver=<model>-x86_64-cpu" requires an icc-bus
to be present
> > * -machine none doesn't have any bus
> > * I don't see a way to create an icc-bus through QMP (is there a way?)
>
> Is the icc-bus something that makes sense for all architectures, so that
> libvirt could just blindly request a command line that uses '-machine
> none' but also instantiates the icc-bus? Even if icc-bus is
> x86-specific, libvirt DOES have some notion of what architecture a qemu
> executable will be targetting, and could modify the command line based
> on what architecture it guesses the binary will support, if only for the
> purpose of minimizing qemu invocations for its probe of supported cpus.
Since -machine none, will not produce accurate CPUID info anyway and libvirt
knows in advance that it's going to create x86 machine, it might probe with
default machine type. It would be more accurate than -machine none,
but still might be not accurate if another machine type will be eventually
used for running guest.
AFAIK, libvirt logic about CPU model features doesn't even take into
account that it may change depending machine-type. I believe getting the
non-machine-type-specific data will be better than the current state
where libvirt relies on the data from cpu_map.xml, which duplicates (and
sometimes don't match) what's inside QEMU.
We will also need a way to figure out machine-type-specific information
about each CPU model without re-running QEMU, but I think we can do this
one step at a time.
--
Eduardo