All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [PULL 31/31] qemu-option: warn for short-form boolean options
Date: Tue, 16 Feb 2021 15:45:33 +0100	[thread overview]
Message-ID: <CABgObfa+0zJdDvJPbX4j2+-cSU=BxVHTd5_U+mnbfYn7ct8qJw@mail.gmail.com> (raw)
In-Reply-To: <CAFEAcA9c01xj0bGcKai-wOeR_c67+Uvcse1Xn=tbYRE7tjwhSw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3514 bytes --]

Il mar 16 feb 2021, 15:11 Peter Maydell <peter.maydell@linaro.org> ha
scritto:

> On Tue, 16 Feb 2021 at 13:44, Paolo Bonzini <pbonzini@redhat.com> wrote:
> >
> > On 16/02/21 14:36, Peter Maydell wrote:
> > > Broadly, I think that being able to say 'foo' when foo is a
> > > boolean option being set to true is obvious and nice-to-use
> > > syntax, and I don't really want it to go away. 'nofoo' for
> > > 'foo=false' is much less obvious and I'm happy if we only
> > > support it as a special-case for 'nowait'.
> >
> > It really depends on what the default  "-M pc,nographics" arguably makes
> > sense too (more so than "-M pc,graphics" since true is the default).
>
> Is anybody using 'pc,nographics' ? google didn't find any examples.
>

It's just an example that the prevalence of "nowait" over "wait" is simply
because the default of "server" is false while the default of "wait" is
true. Any boolean option whose default is true could benefit from a
"no"-prefixed short form. But I am pretty sure that there are users in the
wild for noipv4 or noipv6.

> How do you propose to resolve the issues and ambiguities in the grammar?
> >
> > 1) due to QemuOpts not understanding types, you can specify "serial" and
> > get "serial=on" instead
>
> We should fix this by plumbing through the type information,
> so that we only allow 'foo' to mean 'foo=on' if foo is really
> a boolean (or other type that specifies that it has similar behaviour).
>

There's already type information for non-freeform options (those where the
QemuOptsList includes the list of valid suboptions, such as -smp or -m).
Adding it for freeform options (-M, -device) is basically impossible since
the type information comes from a mix of QAPI schema, QOM class
declarations and C code. One would basically have to do an incremental
visit of the schema (assuming there is a schema, and it's not just C code)
during the parsing. This is understandably not something I plan to spend
time on.

I could change QemuOpts to allow short forms for non-freeform option
groups, and turn -chardev into a non-freeform option. That would solve the
immediate issue with chardev. But I agree that consistent behavior is
better, so I don't think this is a good idea either.

> 2) with a parser that understands other types than strings, you would
> > not be able to specify "-M kernel-irqchip" because it would be converted
> > to the boolean "true" and not the enum "'on'"
>
> We should decide whether 'kernel-irqchip' has a type that
> allows 'no parameter specified' => 'use this default value'
> or not, and if we go for the latter use whatever default value
> the backend expects.


I don't understand, the point of short-form options is to use a
*non-default* value. (In other words, the affirmative short form would
typically be used to specify true when the default is false).

(And probably "boolean-and-an-extra-value"
> types should allow the boolean bit to be specified in all the
> same ways that a plain-old-boolean is.)


> > 3) one is not be able to specify "-M pc" -M usb" because the second
> > kernel-irqchip would be interpreted as a machine type?
>
> I don't understand this one, I'm afraid.
>

I mean that "-M pc -M usb" is parsed as "-machine type=pc -machine
type=usb" and then merged into "-machine type=usb". The user would expect
"-machine type=c -machine usb=on" since "-M pc -M usb=on" works. So
"usb=on" cannot always be shortened to "usb", which is surprising. I think
this one only affects -M though.

Paolo


> -- PMM
>
>

[-- Attachment #2: Type: text/html, Size: 5615 bytes --]

  reply	other threads:[~2021-02-16 14:47 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-23 14:30 [PULL 00/31] Misc patches for 2020-01-21 Paolo Bonzini
2021-01-23 14:30 ` [PULL 01/31] runstate: cleanup reboot and panic actions Paolo Bonzini
2021-01-23 14:30 ` [PULL 02/31] configure: MinGW respect --bindir argument Paolo Bonzini
2021-01-23 14:31 ` [PULL 03/31] x86/cpu: Use max host physical address if -cpu max option is applied Paolo Bonzini
2021-01-23 14:31 ` [PULL 04/31] build-system: clean up TCG/TCI configury Paolo Bonzini
2021-02-06 18:01   ` Philippe Mathieu-Daudé
2021-02-06 19:08     ` Philippe Mathieu-Daudé
2021-01-23 14:31 ` [PULL 05/31] util/cacheflush: Fix error generated by clang Paolo Bonzini
2021-01-23 14:31 ` [PULL 06/31] softmmu/physmem: Silence GCC 10 maybe-uninitialized error Paolo Bonzini
2021-01-23 14:31 ` [PULL 07/31] ide: atapi: check logical block address and read size (CVE-2020-29443) Paolo Bonzini
2021-01-23 14:31 ` [PULL 08/31] build-sys: remove unused LIBS Paolo Bonzini
2021-01-23 14:31 ` [PULL 09/31] build-sys: set global arguments for cflags/ldflags Paolo Bonzini
2021-01-23 14:31 ` [PULL 10/31] build-sys: add libvhost-user missing dependencies Paolo Bonzini
2021-01-23 14:31 ` [PULL 11/31] slirp: update to git master Paolo Bonzini
2021-01-23 14:31 ` [PULL 12/31] meson: Declare have_virtfs_proxy_helper in main meson.build Paolo Bonzini
2021-01-23 14:31 ` [PULL 13/31] nsis: adjust for new MinGW paths Paolo Bonzini
2021-01-23 14:31 ` [PULL 14/31] meson: convert wixl detection to Meson Paolo Bonzini
2021-01-23 14:31 ` [PULL 15/31] meson: Summarize information related to directories first Paolo Bonzini
2021-01-23 14:31 ` [PULL 16/31] meson: Display host binaries information altogether Paolo Bonzini
2021-01-23 14:31 ` [PULL 17/31] meson: Summarize overall features altogether Paolo Bonzini
2021-01-23 14:31 ` [PULL 18/31] meson: Summarize compilation-related information altogether Paolo Bonzini
2021-01-23 14:31 ` [PULL 19/31] meson: Display accelerators and selected targets altogether Paolo Bonzini
2021-01-23 14:31 ` [PULL 20/31] meson: Display block layer information altogether Paolo Bonzini
2021-01-23 14:31 ` [PULL 21/31] meson: Display crypto-related " Paolo Bonzini
2021-01-23 14:31 ` [PULL 22/31] meson: Add a section header for library dependencies Paolo Bonzini
2021-01-23 14:31 ` [PULL 23/31] meson.build: Declare global edk2_targets / install_edk2_blobs variables Paolo Bonzini
2021-01-23 14:31 ` [PULL 24/31] meson.build: Detect bzip2 program Paolo Bonzini
2021-01-23 14:31 ` [PULL 25/31] acceptance: switch to QMP change-vnc-password command Paolo Bonzini
2021-01-23 14:31 ` [PULL 26/31] hmp: remove "change vnc TARGET" command Paolo Bonzini
2021-01-23 14:31 ` [PULL 27/31] qmp: remove deprecated "change" command Paolo Bonzini
2021-01-23 14:31 ` [PULL 28/31] vnc: support "-vnc help" Paolo Bonzini
2021-01-23 14:31 ` [PULL 29/31] qemu-option: clean up id vs. list->merge_lists Paolo Bonzini
2021-01-25  7:42   ` Markus Armbruster
2021-01-25  7:58     ` Paolo Bonzini
2021-01-23 14:31 ` [PULL 30/31] qemu-option: move help handling to get_opt_name_value Paolo Bonzini
2021-01-23 14:31 ` [PULL 31/31] qemu-option: warn for short-form boolean options Paolo Bonzini
2021-02-15 19:56   ` Peter Maydell
2021-02-15 23:14     ` Paolo Bonzini
2021-02-16  9:58       ` Peter Maydell
2021-02-16 10:43         ` Paolo Bonzini
2021-02-16 11:04           ` Peter Maydell
2021-02-16 11:23             ` Paolo Bonzini
2021-02-16 11:58               ` Peter Maydell
2021-02-16 13:30                 ` Paolo Bonzini
2021-02-16 13:36                   ` Peter Maydell
2021-02-16 13:43                     ` Paolo Bonzini
2021-02-16 14:11                       ` Peter Maydell
2021-02-16 14:45                         ` Paolo Bonzini [this message]
2021-02-16 14:51                           ` Peter Maydell
2021-02-16 14:58                             ` Paolo Bonzini
2021-02-16 13:53                     ` Daniel P. Berrangé
2021-01-23 14:57 ` [PULL 00/31] Misc patches for 2020-01-21 no-reply
2021-01-23 19:52 ` Peter Maydell

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='CABgObfa+0zJdDvJPbX4j2+-cSU=BxVHTd5_U+mnbfYn7ct8qJw@mail.gmail.com' \
    --to=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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.