From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45731) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WN1ZU-00051w-Pv for qemu-devel@nongnu.org; Mon, 10 Mar 2014 10:52:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WN1ZO-0006rv-8K for qemu-devel@nongnu.org; Mon, 10 Mar 2014 10:52:52 -0400 Message-ID: <531DD1B5.5030006@redhat.com> Date: Mon, 10 Mar 2014 15:52:37 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1394462261-25581-1-git-send-email-wudxw@linux.vnet.ibm.com> In-Reply-To: <1394462261-25581-1-git-send-email-wudxw@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 1/2] Fix vga_interface_type for command '-device VGA' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Mark Wu , qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: aliguori@amazon.com, agraf@suse.de, nikunj@linux.vnet.ibm.com, afaerber@suse.de Il 10/03/2014 15:37, Mark Wu ha scritto: > Some machine (like ppc) initialization code determines if it has > grahicis according to vga_interface_type. In the original code, > vga_interface_type is evaluated to VGA_NONE even if a vga is added > by '-device VGA'. It causes the machine not aware of the graphics > device configured. This patch adds a new vga device type to indicate > that it has a vga device, which will be initliazed in qom devices > initialization. > > Signed-off-by: Mark Wu > --- > Changes: > v2 -> v3: > Change the var name from 'no_defaults' to 'has_defaults' to avoid > initializing statics to 0. > > > include/sysemu/sysemu.h | 2 +- > vl.c | 42 ++++++++++++++++++++++-------------------- > 2 files changed, 23 insertions(+), 21 deletions(-) > > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index b90df9a..c01304d 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -104,7 +104,7 @@ extern int autostart; > > typedef enum { > VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL, > - VGA_TCX, VGA_CG3, > + VGA_TCX, VGA_CG3, VGA_DEVICE > } VGAInterfaceType; > > extern int vga_interface_type; > diff --git a/vl.c b/vl.c > index 50693e6..f8f7c00 100644 > --- a/vl.c > +++ b/vl.c > @@ -213,6 +213,7 @@ uint32_t xen_domid; > enum xen_mode xen_mode = XEN_EMULATE; > static int tcg_tb_size; > > +static int has_defaults = 1; > static int default_serial = 1; > static int default_parallel = 1; > static int default_virtcon = 1; > @@ -2047,7 +2048,7 @@ static void select_vgahw (const char *p) > { > const char *opts; > > - vga_interface_type = VGA_NONE; > + assert(vga_interface_type == VGA_NONE); > if (strstart(p, "std", &opts)) { > if (vga_available()) { > vga_interface_type = VGA_STD; > @@ -2831,7 +2832,7 @@ int main(int argc, char **argv, char **envp) > const char *loadvm = NULL; > QEMUMachine *machine; > const char *cpu_model; > - const char *vga_model = "none"; > + const char *vga_model = NULL; > const char *qtest_chrdev = NULL; > const char *qtest_log = NULL; > const char *pid_file = NULL; > @@ -3688,16 +3689,7 @@ int main(int argc, char **argv, char **envp) > runstate_set(RUN_STATE_INMIGRATE); > break; > case QEMU_OPTION_nodefaults: > - default_serial = 0; > - default_parallel = 0; > - default_virtcon = 0; > - default_sclp = 0; > - default_monitor = 0; > - default_net = 0; > - default_floppy = 0; > - default_cdrom = 0; > - default_sdcard = 0; > - default_vga = 0; > + has_defaults = 0; > break; > case QEMU_OPTION_xen_domid: > if (!(xen_available())) { > @@ -3924,27 +3916,35 @@ int main(int argc, char **argv, char **envp) > qemu_opts_foreach(qemu_find_opts("device"), default_driver_check, NULL, 0); > qemu_opts_foreach(qemu_find_opts("global"), default_driver_check, NULL, 0); > > - if (machine->no_serial) { > + if (!vga_model && !default_vga) { > + vga_interface_type = VGA_DEVICE; > + } > + if (!has_defaults || machine->no_serial) { > default_serial = 0; > } > - if (machine->no_parallel) { > + if (!has_defaults || machine->no_parallel) { > default_parallel = 0; > } > - if (!machine->use_virtcon) { > + if (!has_defaults || !machine->use_virtcon) { > default_virtcon = 0; > } > - if (!machine->use_sclp) { > + if (!has_defaults || !machine->use_sclp) { > default_sclp = 0; > } > - if (machine->no_floppy) { > + if (!has_defaults || machine->no_floppy) { > default_floppy = 0; > } > - if (machine->no_cdrom) { > + if (!has_defaults || machine->no_cdrom) { > default_cdrom = 0; > } > - if (machine->no_sdcard) { > + if (!has_defaults || machine->no_sdcard) { > default_sdcard = 0; > } > + if (!has_defaults) { > + default_monitor = 0; > + default_net = 0; > + default_vga = 0; > + } > > if (is_daemonized()) { > /* According to documentation and historically, -nographic redirects > @@ -4249,7 +4249,9 @@ int main(int argc, char **argv, char **envp) > vga_model = "std"; > } > } > - select_vgahw(vga_model); > + if (vga_model) { > + select_vgahw(vga_model); > + } > > if (watchdog) { > i = select_watchdog(watchdog); > Reviewed-by: Paolo Bonzini