
On Thu, Sep 29, 2016 at 15:51:58 -0300, Eduardo Habkost wrote:
On Thu, Sep 29, 2016 at 04:21:07PM +0200, Jiri Denemark wrote: [...]
Slightly related, I don't think we have a way to list CPU features supported by QEMU over QMP, do we? "-cpu ?" will show them all, but I couldn't find a QMP command that would give me the same list.
device-list-properties should return all the properties you can set. But I recommend that you don't make libvirt set any of the properties in the list unless: 1) you know what it does; or 2) it is returned by a query-cpu-model-expansion call.
The use case was for pre-checking whether all CPU features specified in domain XML are supported by current QEMU binary. What parameters would I need to use for device-list-properties? And would it work with -machine none?
You just need the right QOM type name (in x86 it is "<model>-x86_64-cpu" or "<model>-i386-cpu"). I will send a patch that includes a "qom-type" field in CpuDefinitionInfo (query-cpu-definitions) so you know what's the right QOM type name to query.
Hmm, it doesn't seem to work (I tried both -machine none and -machine pc): (QEMU) device-list-properties typename=SandyBridge-x86_64-cpu {"error": {"class": "GenericError", "desc": "Can't list properties of device 'SandyBridge-x86_64-cpu'"}} Anyway, is the list of properties expected to depend on the CPU model? If not, wouldn't a simple query-cpu-properties returning a list of properties QEMU understands be good enough? The list would be pretty similar to what -cpu ? returns. It would help us provide a better error in case a user asks for a CPU features that is not supported by their QEMU binary, and it would also help us translate the result of query-cpu-model-expansion; as you probably know, we use older spellings for some CPU features (e.g., pclmulqdq vs. pclmuldq).
I think device-list-properties won't work with an abstract base type like "x86_64-cpu" or "i386-cpu".
Right: (QEMU) device-list-properties typename=x86_64-cpu {"error": {"class": "GenericError", "desc": "Parameter 'name' expects non-abstract device type"}}
But I think it's better query the right class name for the CPU model you plan to use, anyway (this way architecture code will be able to have different CPU models supporting different sets of options, if necessary).
I see, this make sense. Although a generic query-cpu-properties would still be useful for giving us the translation table between new and old features names. Jirka