On 17/01/18 09:34, David Gibson wrote: > On Tue, Jan 16, 2018 at 03:46:20PM +0100, Andrea Bolognani wrote: >> On Wed, 2018-01-17 at 00:54 +1100, David Gibson wrote: >>>> Correct me if I'm wrong, but it seems to me like there's no way >>>> to figure out through QMP whether these new machine options can be >>>> used for a given QEMU binary. >>> >>> Uh, I don't think so. These are machine options like any other (just >>> constructed a bit differently). So they'll appear in qemu -machine >>> pseries,? and I believe that info can also be retrieved with QMP. >> >> Yes, they will indeed show up in the output of -machine pseries,? >> but there's AFAICT no way to retrieve them via QMP. > > Really!? I thought introspecting object properties was QMP's bread > and butter.
On a guest started with '-S': {"execute": "qom-list", "arguments": {"path": "/machine"}} returns: { 'return': [ {'name': 'graphics', 'type': 'bool'}, {'name': 'phandle-start', 'type': 'int'}, {'name': 'dump-guest-core', 'type': 'bool'}, {'name': 'kernel-irqchip', 'type': 'OnOffSplit'}, {'name': 'accel', 'type': 'string'}, {'name': 'append', 'type': 'string'}, {'name': 'dumpdtb', 'type': 'string'}, {'name': 'igd-passthru', 'type': 'bool'}, {'name': 'dt-compatible', 'type': 'string'}, {'name': 'kernel', 'type': 'string'}, {'name': 'usb', 'type': 'bool'}, {'name': 'suppress-vmdesc', 'type': 'bool'}, {'name': 'dtb', 'type': 'string'}, {'name': 'firmware', 'type': 'string'}, {'name': 'mem-merge', 'type': 'bool'}, {'name': 'initrd', 'type': 'string'}, {'name': 'enforce-config-section', 'type': 'bool'}, {'name': 'kvm-shadow-mem', 'type': 'int'}, {'name': 'cap-dfp', 'type': 'bool'}, {'name': 'cap-htm', 'type': 'bool'}, {'name': 'cap-vsx', 'type': 'bool'}, {'name': 'vfio-no-msix-emulation', 'type': 'bool'}, {'name': 'kvm-type', 'type': 'string'}, {'name': 'max-cpu-compat', 'type': 'string'}, { 'name': 'dr-connector[268435480]', 'type': 'child<spapr-drc-cpu>'}, {'name': 'peripheral', 'type': 'child<container>'}, { 'name': 'dr-connector[268435472]', 'type': 'child<spapr-drc-cpu>'}, {'name': 'modern-hotplug-events', 'type': 'bool'}, { 'name': 'dr-connector[268435464]', 'type': 'child<spapr-drc-cpu>'}, { 'name': 'dr-connector[268435456]', 'type': 'child<spapr-drc-cpu>'}, {'name': 'peripheral-anon', 'type': 'child<container>'}, {'name': 'ics', 'type': 'child<icskvm>'}, {'name': 'vsmt', 'type': 'uint32'}, {'name': 'type', 'type': 'string'}, {'name': 'rtc-time', 'type': 'struct tm'}, {'name': 'unattached', 'type': 'child<container>'}, {'name': 'rtc', 'type': 'child<spapr-rtc>'}, {'name': 'resize-hpt', 'type': 'string'}]} but still requires a running qemu, yes. > >> And libvirt >> can't afford to spawn a QEMU process for each machine type >> implemented by each QEMU binary installed on the system just to >> figure out what properties they support; in fact, we've been >> pushing away from that approach - which was used initially - for >> years and we're now at the point where we only fall back to it >> for positively ancient QEMU versions. So the information needs >> to be available through QMP for libvirt to consume it. > > Right, I'm not arguing with that. It's just that I thought that > standard QOM properties on QOM objects (the machine in this case) met > the criteria. > -- Alexey
signature.asc
Description: OpenPGP digital signature