From 986c5f78543bdbd696664447ecdd08cf6d935370 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 8 Dec 2009 13:11:54 +0100 Subject: [PATCH] Set default console to virtio on S390x All "normal" system emulation targets in qemu I'm aware of display output on either VGA or serial output. Our S390x virtio machine doesn't have such kind of legacy hardware. So instead we need to default to a virtio console. Add flags to QEMUMachine to indicate which kind of default devices make sense for the machine in question. Use it for S390x: enable virtcon, disable serial, parallel and vga. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- hw/boards.h | 4 ++++ hw/s390-virtio.c | 4 ++++ vl.c | 19 ++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/hw/boards.h b/hw/boards.h index 7a0f20f63b3..8fe0fbc8fc5 100644 --- a/hw/boards.h +++ b/hw/boards.h @@ -19,6 +19,10 @@ typedef struct QEMUMachine { QEMUMachineInitFunc *init; int use_scsi; int max_cpus; + int no_serial:1, + no_parallel:1, + use_virtcon:1, + no_vga:1; int is_default; GlobalProperty *compat_props; struct QEMUMachine *next; diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c index cc21ee6dae0..51c032adc25 100644 --- a/hw/s390-virtio.c +++ b/hw/s390-virtio.c @@ -243,6 +243,10 @@ static QEMUMachine s390_machine = { .alias = "s390", .desc = "VirtIO based S390 machine", .init = s390_init, + .no_serial = 1, + .no_parallel = 1, + .use_virtcon = 1. + .no_vga = 1, .max_cpus = 255, .is_default = 1, }; diff --git a/vl.c b/vl.c index b4138be0e42..d02893173c6 100644 --- a/vl.c +++ b/vl.c @@ -270,7 +270,7 @@ static void *boot_set_opaque; static int default_serial = 1; static int default_parallel = 1; -static int default_virtcon = 0; +static int default_virtcon = 1; static int default_monitor = 1; static int default_vga = 1; static int default_drive = 1; @@ -5629,14 +5629,31 @@ int main(int argc, char **argv, char **envp) qemu_opts_foreach(&qemu_device_opts, default_driver_check, NULL, 0); + if (machine->no_serial) { + default_serial = 0; + } + if (machine->no_parallel) { + default_parallel = 0; + } + if (!machine->use_virtcon) { + default_virtcon = 0; + } + if (machine->no_vga) { + default_vga = 0; + } + if (display_type == DT_NOGRAPHIC) { if (default_parallel) add_device_config(DEV_PARALLEL, "null"); if (default_serial && default_monitor) { add_device_config(DEV_SERIAL, "mon:stdio"); + } else if (default_virtcon && default_monitor) { + add_device_config(DEV_VIRTCON, "mon:stdio"); } else { if (default_serial) add_device_config(DEV_SERIAL, "stdio"); + if (default_virtcon) + add_device_config(DEV_VIRTCON, "stdio"); if (default_monitor) monitor_parse("stdio", "readline"); } -- 2.39.5