> Current CLI option -cpu cpux,features serves as template > for all created cpus of type: cpux. However QEMU parses > "features" every time it creates a cpu instance and applies > them to it while doing parsing. > > That doesn't work well with -device/device_add infrastructure > as it has no idea about cpu specific hooks that's used for > parsing "features". > In order to make -device/device_add utilize "-cpu features" > template convert it into a set of global properties, so that > every new CPU created will have them applied automatically. > > That also allows to parse features only once, instread of > doing it for every CPU instance created.
While I think this makes sense for most cases, we (s390x) are currently working on a mechanism to compare and baseline cpu models via a qmp interface, to not have to replicate CPU models in libvirt every time we do some changes. To do that, we are creating temporary CPUs to handle the model parsing. So, with our current prototype, we rely on the mechanism to parse properties multiple time, as we are really creating different CPUs. While we could somehow change our mechanism I don't think this is the right thing to do. We will have to support heterogeneous cpu models (I think arm was one of the guys requesting this if I'm not mistaking) and it somehow contradicts to the general mechanism of device_add fully specifying parameters. These would now be implicit parameters. Would it be possible to do this for x86 only? Or find another way to handle the "create just another ordinary CPU we already have"? David