mreza...@redhat.com writes: > From: Miroslav Rezanina <mreza...@redhat.com> > > Output error message using qemu's error_report() function when user > provides the invalid machine type on the command line. This also saves > time to find what issue is when you downgrade from one version of qemu > to another that doesn't support required machine type yet (the version > user downgraded to have to have this patch applied too, of course). > > Signed-off-by: Miroslav Rezanina <mreza...@redhat.com> > --- > v6: > - print help instead of list supported machines on error > vl.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/vl.c b/vl.c > index 383be1b..3297c0a 100644 > --- a/vl.c > +++ b/vl.c > @@ -2600,13 +2600,19 @@ static QEMUMachine *machine_parse(const char *name) static QEMUMachine *machine_parse(const char *name) { QEMUMachine *m, *machine = NULL;
if (name) { machine = find_machine(name); } > if (machine) { > return machine; > } > - printf("Supported machines are:\n"); > - for (m = first_machine; m != NULL; m = m->next) { > - if (m->alias) { > - printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name); > + > + if (name && !is_help_option(name)) { I don't think !name can happen, but you're sticking to what the existing code does. Okay. > + error_report("Unsupported machine type"); > + printf("\nUse '-M help' to list supported machines!\n"); I like this. It gives a concise error message followed by a hint, instead of dumping lengthy help on me without a clear indication why I need it. -M TYPE is sugar for -machine type=TYPE. It was deprecated in commit 80f52a6, and purged from documentation and help texts, except for two occurences in qemu-doc.texi. Unless we un-deprecate -M, this patch should point to the documented option -machine type=help, and we should update qemu-doc.texi to use -machine instead of -M. > + } else { > + printf("Supported machines are:\n"); > + for (m = first_machine; m != NULL; m = m->next) { > + if (m->alias) { > + printf("%-20s %s (alias of %s)\n", m->alias, m->desc, > m->name); > + } > + printf("%-20s %s%s\n", m->name, m->desc, > + m->is_default ? " (default)" : ""); > } > - printf("%-20s %s%s\n", m->name, m->desc, > - m->is_default ? " (default)" : ""); > } > exit(!name || !is_help_option(name)); > }