On Fri, Jan 31, 2014 at 08:18:39PM +0100, Igor Mammedov wrote: > On Fri, 31 Jan 2014 11:56:18 -0700 > Eric Blake <ebl...@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