From patchwork Fri Feb 12 19:02:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Habkost X-Patchwork-Id: 582272 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 67A0A140B04 for ; Sat, 13 Feb 2016 06:03:06 +1100 (AEDT) Received: from localhost ([::1]:35479 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUIzg-000322-Hc for incoming@patchwork.ozlabs.org; Fri, 12 Feb 2016 14:03:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUIzD-0002DN-7o for qemu-devel@nongnu.org; Fri, 12 Feb 2016 14:02:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aUIzB-00080R-J0 for qemu-devel@nongnu.org; Fri, 12 Feb 2016 14:02:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59883) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUIzB-00080L-DJ for qemu-devel@nongnu.org; Fri, 12 Feb 2016 14:02:33 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id EB5C4C0C2363 for ; Fri, 12 Feb 2016 19:02:32 +0000 (UTC) Received: from localhost (vpn1-7-162.gru2.redhat.com [10.97.7.162]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u1CJ2VvN016570; Fri, 12 Feb 2016 14:02:32 -0500 From: Eduardo Habkost To: qemu-devel@nongnu.org Date: Fri, 12 Feb 2016 17:02:24 -0200 Message-Id: <1455303747-19776-2-git-send-email-ehabkost@redhat.com> In-Reply-To: <1455303747-19776-1-git-send-email-ehabkost@redhat.com> References: <1455303747-19776-1-git-send-email-ehabkost@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: Marcel Apfelbaum , Paolo Bonzini , lersek@redhat.com, armbru@redhat.com Subject: [Qemu-devel] [PATCH v2 1/4] vl.c: Fix regression in machine error message X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Marcel Apfelbaum Commit e1ce0c3cb (vl.c: fix regression when reading machine type from config file) fixed the error message when the machine type was supplied inside the config file. However now the option name is not displayed correctly if the error happens when the machine is specified at command line. Running ./x86_64-softmmu/qemu-system-x86_64 -M q35-1.5 -redir tcp:8022::22 will result in the error message: qemu-system-x86_64: -redir tcp:8022::22: unsupported machine type Use -machine help to list supported machines Fixed it by restoring the error location and also extracted the code dealing with machine options into a separate function. Reported-by: Michael S. Tsirkin Reviewed-by: Laszlo Ersek Signed-off-by: Marcel Apfelbaum Reviewed-by: Eduardo Habkost Signed-off-by: Eduardo Habkost --- vl.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/vl.c b/vl.c index 175ebcc..afbf13f 100644 --- a/vl.c +++ b/vl.c @@ -2748,6 +2748,31 @@ static const QEMUOption *lookup_opt(int argc, char **argv, return popt; } +static void set_machine_options(MachineClass **machine_class) +{ + const char *optarg; + QemuOpts *opts; + Location loc; + + loc_push_none(&loc); + + opts = qemu_get_machine_opts(); + qemu_opts_loc_restore(opts); + + optarg = qemu_opt_get(opts, "type"); + if (optarg) { + *machine_class = machine_parse(optarg); + } + + if (*machine_class == NULL) { + error_report("No machine specified, and there is no default"); + error_printf("Use -machine help to list supported machines\n"); + exit(1); + } + + loc_pop(&loc); +} + static int machine_set_property(void *opaque, const char *name, const char *value, Error **errp) @@ -4030,17 +4055,7 @@ int main(int argc, char **argv, char **envp) replay_configure(icount_opts); - opts = qemu_get_machine_opts(); - optarg = qemu_opt_get(opts, "type"); - if (optarg) { - machine_class = machine_parse(optarg); - } - - if (machine_class == NULL) { - error_report("No machine specified, and there is no default"); - error_printf("Use -machine help to list supported machines\n"); - exit(1); - } + set_machine_options(&machine_class); set_memory_options(&ram_slots, &maxram_size, machine_class);