On Tue, Mar 07, 2023 at 10:40:23 +0100, Markus Armbruster wrote:
[Resent with cc: qemu-devel and adjusted subject, sorry for the
noise]
abologna at
redhat.com (Andrea Bolognani) writes:
> On Mon, Feb 27, 2023 at 06:25:23PM +0100, Peter Krempa wrote:
>> On Mon, Feb 27, 2023 at 08:44:57 -0800, Andrea Bolognani wrote:
[...]
> Another example I've found is "smp-opts", which
seems to be used to
> implement the -smp option. Once again, in the JSON we find "smp-opts"
> instead of "smp".
>
> I think it would be worthwile to check with the QEMU developers and
> make sure that they're aware of this behavior. Is it intended? Is it
> documented anywhere? It certainly seems extremely confusing to me.
query-command-line-options has... issues.
First, it's generally[*] limited to options that use QemuOpts.
Second, it reports configuration group names, which are often, but not
always the same as the option name. The exceptions you just have to
know. Group name "acpi" vs. option name "acpitable" is one.
Ah! so that's where 'acpi' comes from.
Third, information on option parameters can be incomplete, or missing
entirely.
Fourth, even when it's there, it's often insufficiently detailed.
These are design issues. I believe the command cannot be fixed, only
replaced.
See my talk "QEMU interface introspection: From hacks to
solutions", KVM Forum 2015.
Video at
https://www.youtube.com/watch?v=IEa8Ao8_B9o
Slides at
http://www.linux-kvm.org/images/7/7a/02x05-Aspen-Markus_Armbruster-QEMU_i...
Questions?
In the end I've dropped the patch detecting the presence of the 'acpi'
option of -machine as queried via query-command-line-options, as we need
to know it per-machine type. That is now reported by qemu in
query-machines, so we don't need to add more querying from
query-command-line options.
In fact I strive to eliminate it after your suggestions, but we can't
still detect the few outstanding flags from anywhere else.
List of currently outstanding queries using query-command-line-options:
{ "fsdev", "multidevs", QEMU_CAPS_FSDEV_MULTIDEVS },
{ "machine", "hpet", QEMU_CAPS_MACHINE_HPET },
{ "sandbox", NULL, QEMU_CAPS_SECCOMP_SANDBOX },
{ "spice", NULL, QEMU_CAPS_SPICE },
{ "spice", "gl", QEMU_CAPS_SPICE_GL },
{ "spice", "rendernode", QEMU_CAPS_SPICE_RENDERNODE },
{ "vnc", "power-control", QEMU_CAPS_VNC_POWER_CONTROL },