[libvirt] [PATCH 0/2] qemu: use -display none instead of -nographic

-display none is preferrable to -nographic which (in addition to disabling graphics output) redirects the serial port to stdio and on OpenBIOS enables the firmware's serial console. Paolo Bonzini (2): qemu: detect -display qemu: generate -display none src/qemu/qemu_capabilities.c | 4 +++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 7 ++++- src/qemu/qemu_parse_command.c | 4 +++ .../qemuargv2xml-nographics-vga-display.args | 23 +++++++++++++++ .../qemuargv2xml-nographics-vga-display.xml | 34 ++++++++++++++++++++++ tests/qemuargv2xmltest.c | 1 + tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + .../caps_2.6.0-gicv2.aarch64.xml | 1 + .../caps_2.6.0-gicv3.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemuhelptest.c | 6 ++-- .../qemuxml2argv-nographics-display.args | 22 ++++++++++++++ .../qemuxml2argv-nographics-display.xml | 25 ++++++++++++++++ tests/qemuxml2argvtest.c | 2 ++ tests/qemuxml2xmltest.c | 2 +- 25 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml -- 2.7.4

Add a new capability for the -display command line option, which has been present since QEMU 1.0. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- src/qemu/qemu_capabilities.c | 4 ++++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemuhelptest.c | 6 ++++-- 16 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2c0b29d..518027c 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -337,6 +337,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "drive-detect-zeroes", "tls-creds-x509", /* 230 */ + "display", ); @@ -1149,6 +1150,8 @@ virQEMUCapsComputeCmdFlags(const char *help, if (strstr(help, "bps=")) virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE); + if (strstr(help, "-display")) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY); if ((p = strstr(help, "-vga")) && !strstr(help, "-std-vga")) { const char *nl = strstr(p, "\n"); if (strstr(p, "|qxl")) @@ -3411,6 +3414,7 @@ virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) virQEMUCapsSet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN); + virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY); } /* Capabilities that are architecture depending diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index affb639..fbc567f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -370,6 +370,7 @@ typedef enum { /* 230 */ QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */ + QEMU_CAPS_DISPLAY, /* -display */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml index c1d5212..a670f42 100644 --- a/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml @@ -114,6 +114,7 @@ <flag name='qxl.vram64_size_mb'/> <flag name='qxl-vga.vram64_size_mb'/> <flag name='device-tray-moved-event'/> + <flag name='display'/> <version>1002002</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml index 3ac7bdd..5a52843 100644 --- a/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml @@ -132,6 +132,7 @@ <flag name='qxl-vga.vram64_size_mb'/> <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> + <flag name='display'/> <version>1003001</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml index 78628ee..56abb6b 100644 --- a/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml @@ -133,6 +133,7 @@ <flag name='qxl-vga.vram64_size_mb'/> <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> + <flag name='display'/> <version>1004002</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index ba096b8..214bcba 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -143,6 +143,7 @@ <flag name='qxl-vga.vram64_size_mb'/> <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> + <flag name='display'/> <version>1005003</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 9b454b0..cddeb69 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -148,6 +148,7 @@ <flag name='qxl-vga.vram64_size_mb'/> <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> + <flag name='display'/> <version>1006000</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index db0d000..d062ae6 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -150,6 +150,7 @@ <flag name='qxl-vga.vram64_size_mb'/> <flag name='device-tray-moved-event'/> <flag name='nec-usb-xhci-ports'/> + <flag name='display'/> <version>1007000</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 964b6f0..51ba06c 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -165,6 +165,7 @@ <flag name='nec-usb-xhci-ports'/> <flag name='name-guest'/> <flag name='drive-detect-zeroes'/> + <flag name='display'/> <version>2001001</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml index 112ac95..760f911 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -182,6 +182,7 @@ <flag name='qxl-vga.max_outputs'/> <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> + <flag name='display'/> <version>2004000</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml index 8157985..9b722fa 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -187,6 +187,7 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> + <flag name='display'/> <version>2005000</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml index aa65733..da9f956 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml @@ -157,6 +157,7 @@ <flag name='name-guest'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> + <flag name='display'/> <version>2005094</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml index 04d77f7..c55563d 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml @@ -157,6 +157,7 @@ <flag name='name-guest'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> + <flag name='display'/> <version>2005094</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml index 120d249..378bca2 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml @@ -151,6 +151,7 @@ <flag name='name-guest'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> + <flag name='display'/> <version>2005094</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml index 1d503dd..3b741bf 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -193,6 +193,7 @@ <flag name='spice-unix'/> <flag name='drive-detect-zeroes'/> <flag name='tls-creds-x509'/> + <flag name='display'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <package></package> diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c index d32a731..5b13693 100644 --- a/tests/qemuhelptest.c +++ b/tests/qemuhelptest.c @@ -460,7 +460,8 @@ mymain(void) QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM, QEMU_CAPS_DEVICE_RTL8139, QEMU_CAPS_DEVICE_E1000, - QEMU_CAPS_DEVICE_VIRTIO_NET); + QEMU_CAPS_DEVICE_VIRTIO_NET, + QEMU_CAPS_DISPLAY); DO_TEST("qemu-1.1.0", 1001000, 0, 0, QEMU_CAPS_DRIVE_CACHE_UNSAFE, QEMU_CAPS_DRIVE_SERIAL, @@ -546,7 +547,8 @@ mymain(void) QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM, QEMU_CAPS_DEVICE_RTL8139, QEMU_CAPS_DEVICE_E1000, - QEMU_CAPS_DEVICE_VIRTIO_NET); + QEMU_CAPS_DEVICE_VIRTIO_NET, + QEMU_CAPS_DISPLAY); DO_TEST_FULL("qemu-1.2.0", 1002000, 0, 0, VIR_ERR_CONFIG_UNSUPPORTED, QEMU_CAPS_LAST); DO_TEST_FULL("qemu-kvm-1.2.0", 1002000, 1, 0, VIR_ERR_CONFIG_UNSUPPORTED, -- 2.7.4

This is preferrable to -nographic which (in addition to disabling graphics output) redirects the serial port to stdio and on OpenBIOS enables the firmware's serial console. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- src/qemu/qemu_command.c | 7 ++++- src/qemu/qemu_parse_command.c | 4 +++ .../qemuargv2xml-nographics-vga-display.args | 23 +++++++++++++++ .../qemuargv2xml-nographics-vga-display.xml | 34 ++++++++++++++++++++++ tests/qemuargv2xmltest.c | 1 + .../qemuxml2argv-nographics-display.args | 22 ++++++++++++++ .../qemuxml2argv-nographics-display.xml | 25 ++++++++++++++++ tests/qemuxml2argvtest.c | 2 ++ tests/qemuxml2xmltest.c | 2 +- 9 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3898ed7..68ee313 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9210,7 +9210,12 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, * these defaults ourselves... */ if (!def->ngraphics) { - virCommandAddArg(cmd, "-nographic"); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY)) { + virCommandAddArg(cmd, "-display"); + virCommandAddArg(cmd, "none"); + } else { + virCommandAddArg(cmd, "-nographic"); + } if (cfg->nogfxAllowHostAudio) virCommandAddEnvPassBlockSUID(cmd, "QEMU_AUDIO_DRV", NULL); diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c index 9ee262b..09bd09a 100644 --- a/src/qemu/qemu_parse_command.c +++ b/src/qemu/qemu_parse_command.c @@ -2039,6 +2039,10 @@ qemuParseCommandLine(virCapsPtr caps, def->virtType = VIR_DOMAIN_VIRT_KVM; } else if (STREQ(arg, "-nographic")) { nographics = true; + } else if (STREQ(arg, "-display")) { + WANT_VALUE(); + if (STREQ(val, "none")) + nographics = true; } else if (STREQ(arg, "-full-screen")) { fullscreen = true; } else if (STREQ(arg, "-localtime")) { diff --git a/tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args b/tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args new file mode 100644 index 0000000..423c078 --- /dev/null +++ b/tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args @@ -0,0 +1,23 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-monitor unix:/tmp/test-monitor,server,nowait \ +-no-acpi \ +-boot c \ +-usb \ +-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=ide,bus=0,unit=0 \ +-net none \ +-serial none \ +-parallel none \ +-vga none diff --git a/tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml b/tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml new file mode 100644 index 0000000..9beaf06 --- /dev/null +++ b/tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml @@ -0,0 +1,34 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <controller type='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index 55dda01..a709c72 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -232,6 +232,7 @@ mymain(void) DO_TEST("graphics-sdl"); DO_TEST("graphics-sdl-fullscreen"); DO_TEST("nographics-vga"); + DO_TEST("nographics-vga-display"); DO_TEST("input-usbmouse"); DO_TEST("input-usbtablet"); DO_TEST("misc-acpi"); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args b/tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args new file mode 100644 index 0000000..c13735a --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args @@ -0,0 +1,22 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ +-no-acpi \ +-boot c \ +-usb \ +-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \ +-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml b/tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml new file mode 100644 index 0000000..2d0fbb4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml @@ -0,0 +1,25 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='ide' index='0'/> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 6c526da..518b667 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -923,6 +923,8 @@ mymain(void) DO_TEST("graphics-sdl", QEMU_CAPS_SDL); DO_TEST("graphics-sdl-fullscreen", QEMU_CAPS_SDL); DO_TEST("nographics", NONE); + DO_TEST("nographics-display", + QEMU_CAPS_DISPLAY); DO_TEST("nographics-vga", QEMU_CAPS_VGA_NONE); DO_TEST("graphics-spice", diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index af69709..ae328c2 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -448,7 +448,7 @@ mymain(void) DO_TEST("graphics-spice-auto-socket-cfg"); cfg->spiceAutoUnixSocket = false; - DO_TEST("nographics-vga"); + DO_TEST_FULL("nographics-vga", WHEN_BOTH, GIC_NONE, QEMU_CAPS_DISPLAY); DO_TEST("input-usbmouse"); DO_TEST("input-usbtablet"); DO_TEST("misc-acpi"); -- 2.7.4

On Tue, Jul 05, 2016 at 02:35:28PM +0200, Paolo Bonzini wrote:
This is preferrable to -nographic which (in addition to disabling graphics output) redirects the serial port to stdio and on OpenBIOS enables the firmware's serial console.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- src/qemu/qemu_command.c | 7 ++++- src/qemu/qemu_parse_command.c | 4 +++ .../qemuargv2xml-nographics-vga-display.args | 23 +++++++++++++++ .../qemuargv2xml-nographics-vga-display.xml | 34 ++++++++++++++++++++++ tests/qemuargv2xmltest.c | 1 + .../qemuxml2argv-nographics-display.args | 22 ++++++++++++++ .../qemuxml2argv-nographics-display.xml | 25 ++++++++++++++++ tests/qemuxml2argvtest.c | 2 ++ tests/qemuxml2xmltest.c | 2 +- 9 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3898ed7..68ee313 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9210,7 +9210,12 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, * these defaults ourselves... */ if (!def->ngraphics) { - virCommandAddArg(cmd, "-nographic"); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY)) { + virCommandAddArg(cmd, "-display"); + virCommandAddArg(cmd, "none"); + } else { + virCommandAddArg(cmd, "-nographic"); + }
Am I right in thinking that -display none vs -nographic has *no* effect on guest machine ABI ? I think we're safe based on my reading of it, particularly since we use -nodefaults and -nodefconfig, but want to confirm there's no edge case i'm not aware of. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 05/07/2016 14:59, Daniel P. Berrange wrote:
if (!def->ngraphics) { - virCommandAddArg(cmd, "-nographic"); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY)) { + virCommandAddArg(cmd, "-display"); + virCommandAddArg(cmd, "none"); + } else { + virCommandAddArg(cmd, "-nographic"); + }
Am I right in thinking that -display none vs -nographic has *no* effect on guest machine ABI ? I think we're safe based on my reading of it, particularly since we use -nodefaults and -nodefconfig, but want to confirm there's no edge case i'm not aware of.
It changes one fw_cfg field from 0 to 1, but only OpenBIOS looks at it right now. Paolo

On Tue, Jul 05, 2016 at 03:52:09PM +0200, Paolo Bonzini wrote:
On 05/07/2016 14:59, Daniel P. Berrange wrote:
if (!def->ngraphics) { - virCommandAddArg(cmd, "-nographic"); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY)) { + virCommandAddArg(cmd, "-display"); + virCommandAddArg(cmd, "none"); + } else { + virCommandAddArg(cmd, "-nographic"); + }
Am I right in thinking that -display none vs -nographic has *no* effect on guest machine ABI ? I think we're safe based on my reading of it, particularly since we use -nodefaults and -nodefconfig, but want to confirm there's no edge case i'm not aware of.
It changes one fw_cfg field from 0 to 1, but only OpenBIOS looks at it right now.
Ok, that's fine as PPC doesn't have versioned machine types anyway, so its migration compat is doomed regardless :-) Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 05.07.2016 14:35, Paolo Bonzini wrote:
-display none is preferrable to -nographic which (in addition to disabling graphics output) redirects the serial port to stdio and on OpenBIOS enables the firmware's serial console.
Paolo Bonzini (2): qemu: detect -display qemu: generate -display none
src/qemu/qemu_capabilities.c | 4 +++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 7 ++++- src/qemu/qemu_parse_command.c | 4 +++ .../qemuargv2xml-nographics-vga-display.args | 23 +++++++++++++++ .../qemuargv2xml-nographics-vga-display.xml | 34 ++++++++++++++++++++++ tests/qemuargv2xmltest.c | 1 + tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + .../caps_2.6.0-gicv2.aarch64.xml | 1 + .../caps_2.6.0-gicv3.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemuhelptest.c | 6 ++-- .../qemuxml2argv-nographics-display.args | 22 ++++++++++++++ .../qemuxml2argv-nographics-display.xml | 25 ++++++++++++++++ tests/qemuxml2argvtest.c | 2 ++ tests/qemuxml2xmltest.c | 2 +- 25 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml
Just to obey the formal side of the process, ACK series. BTW: there are lots of '-nographic' in our tests/qemuxml2argvdata/qemuxml2argv-*.args files, do we want to update those to have '-display none' instead? Michal

On 07.07.2016 11:59, Michal Privoznik wrote:
On 05.07.2016 14:35, Paolo Bonzini wrote:
-display none is preferrable to -nographic which (in addition to disabling graphics output) redirects the serial port to stdio and on OpenBIOS enables the firmware's serial console.
Paolo Bonzini (2): qemu: detect -display qemu: generate -display none
src/qemu/qemu_capabilities.c | 4 +++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 7 ++++- src/qemu/qemu_parse_command.c | 4 +++ .../qemuargv2xml-nographics-vga-display.args | 23 +++++++++++++++ .../qemuargv2xml-nographics-vga-display.xml | 34 ++++++++++++++++++++++ tests/qemuargv2xmltest.c | 1 + tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + .../caps_2.6.0-gicv2.aarch64.xml | 1 + .../caps_2.6.0-gicv3.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemuhelptest.c | 6 ++-- .../qemuxml2argv-nographics-display.args | 22 ++++++++++++++ .../qemuxml2argv-nographics-display.xml | 25 ++++++++++++++++ tests/qemuxml2argvtest.c | 2 ++ tests/qemuxml2xmltest.c | 2 +- 25 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.args create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga-display.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-nographics-display.xml
Just to obey the formal side of the process, ACK series.
I just realized, that you might not have the push rights, so I went ahead and pushed these. Michal

On 07/07/2016 11:59, Michal Privoznik wrote:
BTW: there are lots of '-nographic' in our tests/qemuxml2argvdata/qemuxml2argv-*.args files, do we want to update those to have '-display none' instead?
Possibly, but to do that you'd have to add the capability to all the tests. It would be irrelevant for most tests, which test disk XML and the like. Paolo
participants (3)
-
Daniel P. Berrange
-
Michal Privoznik
-
Paolo Bonzini