From: Markus Armbruster <armbru@pond.sub.org>
To: libvir-list@redhat.com
Cc: Andrea Bolognani <abologna@redhat.com>,
Peter Krempa <pkrempa@redhat.com>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>
Subject: query-command-line-options (was: [PATCH 1/7] qemu: capabilities: Introduce QEMU_CAPS_MACHINE_ACPI)
Date: Tue, 07 Mar 2023 10:40:23 +0100 [thread overview]
Message-ID: <87jzzsc320.fsf_-_@pond.sub.org> (raw)
In-Reply-To: CABJz62OMWXAx_ExYqvvg1DvcHkiP+SkwNMQZ+56QwoHpsNBqGA@mail.gmail.com
[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:
>> > This looks like you're checking whether -acpi itself exists as a
>> > top-level option. Which it doesn't, but -no-acpi does and yet it
>> > doesn't seem to be advertised in the output of
>> > query-command-line-options?
>>
>> Well, it actually does exist in the output of
>> query-command-line-options, but I have no idea what it means:
>>
>> virsh qemu-monitor-command --pretty cd query-command-line-options | jq .return[].option
>>
>> One of the options is "acpi".
>
> Right, I've seen that. What I wanted to say if that passing it to
> QEMU results in an error:
>
> $ qemu-system-x86_64 -acpi
> qemu-system-x86_64: -acpi: invalid option
>
> So it's not really an option, despite being advertised as such. And
> on the opposite end of the spectrum we have -no-acpi, which *does*
> work when passed to QEMU but is nowhere to be found in the JSON
> document returned by query-command-line-options.
>
>> > Basically it looks like there are some serious introspection
>> > shenanigans going on, and I'm not sure we can actually reliably
>> > detect whether -machine acpi can be used until your QEMU patch has
>> > been merged.
>> >
>> > Or I might just have missed something obvious! In which case, please
>> > let me know what it is :)
>>
>> I have no idea what the 'acpi' option does but it certainly mislead me.
>
> I'm not entirely sure, but I think it might be connected to this
> bit of code in vl.c:
>
> case QEMU_OPTION_acpitable:
> opts = qemu_opts_parse_noisily(qemu_find_opts("acpi"),
> optarg, true);
>
> This is the handling for the -acpitable option, but notice how "acpi"
> is mentioned as well, to perform some sort of lookup. I think this
> might be the reason why "acpi" gets included in the JSON, while
> "acpitable" doesn't.
>
> 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.
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_interface_introspection.pdf
Questions?
[*] "Generally", because we hacked in a special case to keep "machine"
in its output when we weaned it off QemuOpts. QEMU commit 40e07370f21.
next parent reply other threads:[~2023-03-07 14:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1677511354.git.pkrempa@redhat.com>
[not found] ` <8718b22eda052662087087b4ce659b054974c9e0.1677511354.git.pkrempa@redhat.com>
[not found] ` <CABJz62PHsQHiyo06PtfcDeS1LddYyDw2pC_seObtZcLR5cPQyQ@mail.gmail.com>
[not found] ` <Y/zng8+7s05O0tRd@angien.pipo.sk>
[not found] ` <CABJz62OMWXAx_ExYqvvg1DvcHkiP+SkwNMQZ+56QwoHpsNBqGA@mail.gmail.com>
2023-03-07 9:40 ` Markus Armbruster [this message]
2023-03-07 14:28 ` query-command-line-options (was: [PATCH 1/7] qemu: capabilities: Introduce QEMU_CAPS_MACHINE_ACPI) Peter Krempa
2023-05-26 8:54 ` query-command-line-options Markus Armbruster
2023-05-26 11:07 ` query-command-line-options Ján Tomko
2023-05-26 12:10 ` query-command-line-options Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jzzsc320.fsf_-_@pond.sub.org \
--to=armbru@pond.sub.org \
--cc=abologna@redhat.com \
--cc=armbru@redhat.com \
--cc=libvir-list@redhat.com \
--cc=pkrempa@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.