[libvirt] [PATCH v2 0/7] Add support for video and input devices on S390

Hi, This patch series adds Libvirt support for video and input devices for QEMU guests on S390. QEMU v2.11.0 added support for the virtio-gpu-ccw device [1] and virtio-{keyboard, mouse, tablet}-ccw devices [2], which can be used as video and input devices respectively. Thanks Farhan [1] https://git.qemu.org/?p=qemu.git;a=commit;h=1f8ad88935f5cb5a2968909e392dbeee... [2] https://git.qemu.org/?p=qemu.git;a=commit;h=3382cf1fabbf722dce931846853dae71... ChangeLog --------- v1 -> v2 - Split virtio-gpu-ccw capability (patch 1) and functionality (patch 2) into 2 patches. - Code changes per John's comments (patch 2). - Split capability for input devices (patch 4) and functionality (patch 5) into 2 patches. - Modify news update as per John's suggestion (patch 7). Farhan Ali (7): qemu: Introduce a new capability for virtio-gpu-ccw qemu: Add support for virtio-gpu-ccw video device on S390 tests: Add test cases for virtio-gpu-ccw qemu: Introduce capabilities for virtio input ccw devices qemu: Add support for virtio input ccw devices tests: Add test case for virtio input ccw devices news: Update for virtio-gpu-ccw and virtio input ccw devices docs/formatdomain.html.in | 5 ++ docs/news.xml | 10 +++ src/qemu/qemu_capabilities.c | 13 ++++ src/qemu/qemu_capabilities.h | 6 ++ src/qemu/qemu_command.c | 27 +++++-- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domain_address.c | 12 +++- src/qemu/qemu_process.c | 5 +- .../qemucapabilitiesdata/caps_2.11.0.s390x.replies | 83 +++++++++++++++++++--- tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 6 +- tests/qemuxml2argvdata/input-virtio-ccw.args | 26 +++++++ tests/qemuxml2argvdata/input-virtio-ccw.xml | 29 ++++++++ .../qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml | 18 +++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.args | 25 +++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml | 35 +++++++++ tests/qemuxml2argvtest.c | 15 ++++ tests/qemuxml2xmloutdata/input-virtio-ccw.xml | 37 ++++++++++ .../video-virtio-gpu-ccw-auto.xml | 35 +++++++++ tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml | 39 ++++++++++ tests/qemuxml2xmltest.c | 22 ++++++ 20 files changed, 431 insertions(+), 19 deletions(-) create mode 100644 tests/qemuxml2argvdata/input-virtio-ccw.args create mode 100644 tests/qemuxml2argvdata/input-virtio-ccw.xml create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.args create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/input-virtio-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml -- 2.7.4

QEMU on S390 (since v2.11) can support virtio-gpu-ccw device. Let's introduce a new qemu capability for the device. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- src/qemu/qemu_capabilities.c | 5 ++ src/qemu/qemu_capabilities.h | 1 + .../qemucapabilitiesdata/caps_2.11.0.s390x.replies | 83 +++++++++++++++++++--- tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 3 +- 4 files changed, 82 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 3eb5ed6..256595e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -459,6 +459,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "pl011", "machine.pseries.max-cpu-compat", "dump-completed", + "virtio-gpu-ccw", ); @@ -1694,6 +1695,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "sclplmconsole", QEMU_CAPS_DEVICE_SCLPLMCONSOLE }, { "isa-serial", QEMU_CAPS_DEVICE_ISA_SERIAL }, { "pl011", QEMU_CAPS_DEVICE_PL011 }, + { "virtio-gpu-ccw", QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, }; static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBalloon[] = { @@ -1947,6 +1949,9 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { { "spapr-pci-host-bridge", virQEMUCapsObjectPropsSpaprPCIHostBridge, ARRAY_CARDINALITY(virQEMUCapsObjectPropsSpaprPCIHostBridge), QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE }, + { "virtio-gpu-ccw", virQEMUCapsObjectPropsVirtioGpu, + ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu), + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, }; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c2ec2be..b4852e5 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -444,6 +444,7 @@ typedef enum { QEMU_CAPS_DEVICE_PL011, /* -device pl011 (not user-instantiable) */ QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT, /* -machine pseries,max-cpu-compat= */ QEMU_CAPS_DUMP_COMPLETED, /* DUMP_COMPLETED event */ + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW, /* -device virtio-gpu-ccw */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies index 860904b..2de2560 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies @@ -3459,6 +3459,71 @@ { "return": [ { + "name": "notify_on_empty", + "description": "on/off", + "type": "bool" + }, + { + "name": "ioeventfd", + "description": "on/off", + "type": "bool" + }, + { + "name": "any_layout", + "description": "on/off", + "type": "bool" + }, + { + "name": "devno", + "description": "Identifier of an I/O device in the channel subsystem, example: fe.1.23ab", + "type": "str" + }, + { + "name": "indirect_desc", + "description": "on/off", + "type": "bool" + }, + { + "name": "event_idx", + "description": "on/off", + "type": "bool" + }, + { + "name": "virtio-backend", + "type": "child<virtio-gpu-device>" + }, + { + "name": "yres", + "type": "uint32" + }, + { + "name": "xres", + "type": "uint32" + }, + { + "name": "iommu_platform", + "description": "on/off", + "type": "bool" + }, + { + "name": "max_outputs", + "type": "uint32" + }, + { + "name": "max_hostmem", + "type": "size" + }, + { + "name": "max_revision", + "type": "uint32" + } + ], + "id": "libvirt-34" +} + +{ + "return": [ + { "hotpluggable-cpus": true, "name": "s390-ccw-virtio-2.7", "cpu-max": 248 @@ -3506,7 +3571,7 @@ "cpu-max": 248 } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -4040,20 +4105,20 @@ "migration-safe": true } ], - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "emulator" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -5174,7 +5239,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -5232,7 +5297,7 @@ "capability": "x-multifd" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -15100,7 +15165,7 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -15139,11 +15204,11 @@ } } }, - "id": "libvirt-41" + "id": "libvirt-42" } { - "id": "libvirt-42", + "id": "libvirt-43", "error": { "class": "GenericError", "desc": "Property '.migratable' not found" diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml index 17abac9..46ae5e2 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -146,9 +146,10 @@ <flag name='disk-share-rw'/> <flag name='iscsi.password-secret'/> <flag name='dump-completed'/> + <flag name='virtio-gpu-ccw'/> <version>2011000</version> <kvmVersion>0</kvmVersion> - <microcodeVersion>340897</microcodeVersion> + <microcodeVersion>342058</microcodeVersion> <package></package> <arch>s390x</arch> <hostCPU type='kvm' model='z14-base' migratability='no'> -- 2.7.4

QEMU on S390 (since v2.11) can support the virtio-gpu-ccw device, which can be used as a video device. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 3 +++ src/qemu/qemu_command.c | 13 +++++++++++-- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domain_address.c | 12 ++++++++++-- src/qemu/qemu_process.c | 5 ++++- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 6fd2189..0908709 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -6484,6 +6484,9 @@ qemu-kvm -net nic,model=? /dev/null <dd> The optional <code>address</code> sub-element can be used to tie the video device to a particular PCI slot. + On S390, <code>address</code> can be used to provide the + CCW address for the video device (<span class="since"> + since 4.2.0</span>). </dd> <dt><code>driver</code></dt> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a8afbd1..5882637 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -132,7 +132,7 @@ VIR_ENUM_IMPL(qemuDeviceVideoSecondary, VIR_DOMAIN_VIDEO_TYPE_LAST, "", /* don't support vbox */ "qxl", "", /* don't support parallels */ - "virtio-gpu-pci", + "virtio-gpu", "" /* don't support gop */); VIR_ENUM_DECL(qemuSoundCodec) @@ -4296,7 +4296,16 @@ qemuBuildDeviceVideoStr(const virDomainDef *def, goto error; } - virBufferAsprintf(&buf, "%s,id=%s", model, video->info.alias); + if (STREQ(model, "virtio-gpu")) { + if (video->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) + virBufferAsprintf(&buf, "%s-ccw", model); + else + virBufferAsprintf(&buf, "%s-pci", model); + } else { + virBufferAsprintf(&buf, "%s", model); + } + + virBufferAsprintf(&buf, ",id=%s", video->info.alias); if (video->accel && video->accel->accel3d == VIR_TRISTATE_SWITCH_ON) { virBufferAsprintf(&buf, ",virgl=%s", diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7022f7c..4aaf617 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5425,7 +5425,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->data.video->type == VIR_DOMAIN_VIDEO_TYPE_DEFAULT) { if (ARCH_IS_PPC64(def->os.arch)) dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_VGA; - else if (qemuDomainIsVirt(def)) + else if (qemuDomainIsVirt(def) || ARCH_IS_S390(def->os.arch)) dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_VIRTIO; else dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_CIRRUS; diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 2551706..37473eb 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -287,8 +287,8 @@ qemuDomainPrimeVirtioDeviceAddresses(virDomainDefPtr def, { /* declare address-less virtio devices to be of address type 'type' - disks, networks, consoles, controllers, memballoon and rng in this - order + disks, networks, videos, consoles, controllers, memballoon and rng + in this order if type is ccw filesystem devices are declared to be of address type ccw */ size_t i; @@ -308,6 +308,14 @@ qemuDomainPrimeVirtioDeviceAddresses(virDomainDefPtr def, } } + for (i = 0; i < def->nvideos; i++) { + virDomainVideoDefPtr video = def->videos[i]; + + if (video->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE && + video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO) + video->info.type = type; + } + for (i = 0; i < def->ninputs; i++) { if (def->inputs[i]->bus == VIR_DOMAIN_INPUT_BUS_VIRTIO && def->inputs[i]->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 57c06c7..1afb71f 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4778,7 +4778,10 @@ qemuProcessStartValidateVideo(virDomainObjPtr vm, (video->type == VIR_DOMAIN_VIDEO_TYPE_QXL && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_QXL)) || (video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_GPU))) { + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_GPU)) || + (video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO && + video->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW))) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("this QEMU does not support '%s' video device"), virDomainVideoTypeToString(video->type)); -- 2.7.4

On Mon, Mar 19, 2018 at 02:35:30PM -0400, Farhan Ali wrote:
QEMU on S390 (since v2.11) can support the virtio-gpu-ccw device, which can be used as a video device.
Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 3 +++ src/qemu/qemu_command.c | 13 +++++++++++-- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domain_address.c | 12 ++++++++++-- src/qemu/qemu_process.c | 5 ++++- 5 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7022f7c..4aaf617 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5425,7 +5425,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->data.video->type == VIR_DOMAIN_VIDEO_TYPE_DEFAULT) { if (ARCH_IS_PPC64(def->os.arch)) dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_VGA; - else if (qemuDomainIsVirt(def)) + else if (qemuDomainIsVirt(def) || ARCH_IS_S390(def->os.arch)) dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_VIRTIO; else dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_CIRRUS;
This hunk which does not 'add support' but 'changes the default' belongs in a separate patch IMO.

On 03/22/2018 03:18 PM, Ján Tomko wrote:
On Mon, Mar 19, 2018 at 02:35:30PM -0400, Farhan Ali wrote:
QEMU on S390 (since v2.11) can support the virtio-gpu-ccw device, which can be used as a video device.
Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 3 +++ src/qemu/qemu_command.c | 13 +++++++++++-- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domain_address.c | 12 ++++++++++-- src/qemu/qemu_process.c | 5 ++++- 5 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7022f7c..4aaf617 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5425,7 +5425,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->data.video->type == VIR_DOMAIN_VIDEO_TYPE_DEFAULT) { if (ARCH_IS_PPC64(def->os.arch)) dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_VGA; - else if (qemuDomainIsVirt(def)) + else if (qemuDomainIsVirt(def) || ARCH_IS_S390(def->os.arch)) dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_VIRTIO; else dev->data.video->type = VIR_DOMAIN_VIDEO_TYPE_CIRRUS;
This hunk which does not 'add support' but 'changes the default' belongs in a separate patch IMO.
Hi Jan, Well I thought it would have been better to keep all the video related changes in one patch. But if the the preference is to move this hunk out then I will move it into a separate patch.
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

A test cases to test the virtio-gpu-ccw device. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- .../qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml | 18 ++++++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.args | 25 ++++++++++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml | 35 +++++++++++++++++++ tests/qemuxml2argvtest.c | 7 ++++ .../video-virtio-gpu-ccw-auto.xml | 35 +++++++++++++++++++ tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml | 39 ++++++++++++++++++++++ tests/qemuxml2xmltest.c | 14 ++++++++ 7 files changed, 173 insertions(+) create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.args create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml diff --git a/tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml b/tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml new file mode 100644 index 0000000..2d5da38 --- /dev/null +++ b/tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml @@ -0,0 +1,18 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1803</uuid> + <memory>219136</memory> + <vcpu>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> + </os> + <devices> + <emulator>/usr/bin/qemu-system-s390x</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + </disk> + <graphics type='vnc'/> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/video-virtio-gpu-ccw.args b/tests/qemuxml2argvdata/video-virtio-gpu-ccw.args new file mode 100644 index 0000000..e5e8854 --- /dev/null +++ b/tests/qemuxml2argvdata/video-virtio-gpu-ccw.args @@ -0,0 +1,25 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-s390x \ +-name QEMUGuest1 \ +-S \ +-M s390-ccw-virtio \ +-m 214 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1803 \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=readline \ +-boot c \ +-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ +-device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ +id=virtio-disk0 \ +-vnc 127.0.0.1:0 \ +-device virtio-gpu-ccw,id=video0,max_outputs=1,devno=fe.0.0002 \ +-device virtio-gpu-ccw,id=video1,max_outputs=1,devno=fe.0.0003 \ +-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0001 diff --git a/tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml b/tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml new file mode 100644 index 0000000..b327595 --- /dev/null +++ b/tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml @@ -0,0 +1,35 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1803</uuid> + <memory>219136</memory> + <currentMemory>219136</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-s390x</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0'/> + </disk> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x1'/> + </memballoon> + <graphics type='vnc'/> + <video> + <model type='virtio' heads='1' primary='yes'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/> + </video> + <video> + <model type='virtio' heads='1'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0003'/> + </video> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index f6a90c2..d2a1df4 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -3007,6 +3007,13 @@ mymain(void) DO_TEST("disk-many-format-probing", QEMU_CAPS_DRIVE_BOOT); driver.config->allowDiskFormatProbing = false; + DO_TEST("video-virtio-gpu-ccw", QEMU_CAPS_VIRTIO_CCW, + QEMU_CAPS_DEVICE_VIRTIO_GPU, + QEMU_CAPS_DEVICE_VIDEO_PRIMARY, + QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS, + QEMU_CAPS_VNC, + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW); + if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL) virFileDeleteTree(fakerootdir); diff --git a/tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml b/tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml new file mode 100644 index 0000000..b373275 --- /dev/null +++ b/tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml @@ -0,0 +1,35 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1803</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>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-system-s390x</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </disk> + <graphics type='vnc' port='-1' autoport='yes'> + <listen type='address'/> + </graphics> + <video> + <model type='virtio' heads='1' primary='yes'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/> + </video> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/> + </memballoon> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml b/tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml new file mode 100644 index 0000000..d34be84 --- /dev/null +++ b/tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml @@ -0,0 +1,39 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1803</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>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-system-s390x</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </disk> + <graphics type='vnc' port='-1' autoport='yes'> + <listen type='address'/> + </graphics> + <video> + <model type='virtio' heads='1' primary='yes'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/> + </video> + <video> + <model type='virtio' heads='1'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0003'/> + </video> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/> + </memballoon> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 28ba46e..0ea801b 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -1180,6 +1180,20 @@ mymain(void) DO_TEST("video-qxl-heads", NONE); DO_TEST("video-qxl-noheads", NONE); DO_TEST("video-virtio-gpu-secondary", NONE); + DO_TEST("video-virtio-gpu-ccw", + QEMU_CAPS_VIRTIO_CCW, + QEMU_CAPS_DEVICE_VIRTIO_GPU, + QEMU_CAPS_DEVICE_VIDEO_PRIMARY, + QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS, + QEMU_CAPS_VNC, + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW); + DO_TEST("video-virtio-gpu-ccw-auto", + QEMU_CAPS_VIRTIO_CCW, + QEMU_CAPS_DEVICE_VIRTIO_GPU, + QEMU_CAPS_DEVICE_VIDEO_PRIMARY, + QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS, + QEMU_CAPS_VNC, + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW); DO_TEST("intel-iommu", QEMU_CAPS_DEVICE_INTEL_IOMMU); -- 2.7.4

On Mon, Mar 19, 2018 at 02:35:31PM -0400, Farhan Ali wrote:
A test cases to test the virtio-gpu-ccw device.
Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- .../qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml | 18 ++++++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.args | 25 ++++++++++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml | 35 +++++++++++++++++++ tests/qemuxml2argvtest.c | 7 ++++ .../video-virtio-gpu-ccw-auto.xml | 35 +++++++++++++++++++ tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml | 39 ++++++++++++++++++++++ tests/qemuxml2xmltest.c | 14 ++++++++ 7 files changed, 173 insertions(+)
Test cases can be squashed into commits adding the functionality to demonstrate what it does and the rest should be added as early as possible to show that later patches do not break it. If I understand correctly: qemuxml2xml: -ccw.xml should work even as a first patch of the series (and since the only difference between the input and the output file is virtio-gpu unrelated, just taking the current output as the new input and symlinking the outfile should be enough) qemuxml2xml: -auto-ccw.xml belongs with the patch changing the default and the tests/qemuxml2argvtest.c and .args changes belong with the command line formatter Jan
create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.args create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml

On 03/22/2018 03:27 PM, Ján Tomko wrote:
On Mon, Mar 19, 2018 at 02:35:31PM -0400, Farhan Ali wrote:
A test cases to test the virtio-gpu-ccw device.
Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- .../qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml | 18 ++++++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.args | 25 ++++++++++++++ tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml | 35 +++++++++++++++++++ tests/qemuxml2argvtest.c | 7 ++++ .../video-virtio-gpu-ccw-auto.xml | 35 +++++++++++++++++++ tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml | 39 ++++++++++++++++++++++ tests/qemuxml2xmltest.c | 14 ++++++++ 7 files changed, 173 insertions(+)
Test cases can be squashed into commits adding the functionality to demonstrate what it does and the rest should be added as early as possible to show that later patches do not break it.
Understood and it makes sense.
If I understand correctly: qemuxml2xml: -ccw.xml should work even as a first patch of the series (and since the only difference between the input and the output file is virtio-gpu unrelated, just taking the current output as the new input and symlinking the outfile should be enough)
Well the 'graphics' tag auto generates some default values, so symlink might not work.
qemuxml2xml: -auto-ccw.xml belongs with the patch changing the default and the tests/qemuxml2argvtest.c and .args changes belong with the command line formatter
Okay, will change.
Jan
create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.args create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw-auto.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

QEMU on S390 (since v2.11) can support virtio input ccw devices. Introduce qemu capabilities for these devices. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- src/qemu/qemu_capabilities.c | 8 ++++++++ src/qemu/qemu_capabilities.h | 5 +++++ tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 3 +++ 3 files changed, 16 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 256595e..87dca5f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -460,6 +460,11 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "machine.pseries.max-cpu-compat", "dump-completed", "virtio-gpu-ccw", + "virtio-keyboard-ccw", + + /* 285 */ + "virtio-mouse-ccw", + "virtio-tablet-ccw", ); @@ -1696,6 +1701,9 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "isa-serial", QEMU_CAPS_DEVICE_ISA_SERIAL }, { "pl011", QEMU_CAPS_DEVICE_PL011 }, { "virtio-gpu-ccw", QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, + { "virtio-keyboard-ccw", QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW }, + { "virtio-mouse-ccw", QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW }, + { "virtio-tablet-ccw", QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW }, }; static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBalloon[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index b4852e5..3f3c29f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -445,6 +445,11 @@ typedef enum { QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT, /* -machine pseries,max-cpu-compat= */ QEMU_CAPS_DUMP_COMPLETED, /* DUMP_COMPLETED event */ QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW, /* -device virtio-gpu-ccw */ + QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW, /* -device virtio-keyboard-ccw */ + + /* 285 */ + QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW, /* -device virtio-mouse-ccw */ + QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW, /* -device virtio-tablet-ccw */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml index 46ae5e2..70a35ef 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -147,6 +147,9 @@ <flag name='iscsi.password-secret'/> <flag name='dump-completed'/> <flag name='virtio-gpu-ccw'/> + <flag name='virtio-keyboard-ccw'/> + <flag name='virtio-mouse-ccw'/> + <flag name='virtio-tablet-ccw'/> <version>2011000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>342058</microcodeVersion> -- 2.7.4

QEMU on S390 (since v2.11) can support virtio input ccw devices. So build the qemu command line for ccw devices. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> --- docs/formatdomain.html.in | 2 ++ src/qemu/qemu_command.c | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 0908709..08dc74b 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -6048,6 +6048,8 @@ qemu-kvm -net nic,model=? /dev/null sub-element <code><address></code> which can tie the device to a particular PCI slot, <a href="#elementsAddress">documented above</a>. + On S390, <code>address</code> can be used to provide a CCW address for + an input device (<span class="since">since 4.2.0</span>). For type <code>passthrough</code>, the mandatory sub-element <code>source</code> must have an <code>evdev</code> attribute containing the absolute path to the diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 5882637..c95d5eb 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3955,6 +3955,8 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, if (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { suffix = "-pci"; + } else if (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) { + suffix = "-ccw"; } else if (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO) { suffix = "-device"; } else { @@ -3966,7 +3968,9 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, switch ((virDomainInputType) dev->type) { case VIR_DOMAIN_INPUT_TYPE_MOUSE: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_MOUSE)) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_MOUSE) || + (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW))) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("virtio-mouse is not supported by this QEMU binary")); goto error; @@ -3974,7 +3978,9 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, virBufferAsprintf(&buf, "virtio-mouse%s,id=%s", suffix, dev->info.alias); break; case VIR_DOMAIN_INPUT_TYPE_TABLET: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_TABLET)) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_TABLET) || + (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW))) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("virtio-tablet is not supported by this QEMU binary")); goto error; @@ -3982,7 +3988,9 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, virBufferAsprintf(&buf, "virtio-tablet%s,id=%s", suffix, dev->info.alias); break; case VIR_DOMAIN_INPUT_TYPE_KBD: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_KEYBOARD)) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_KEYBOARD) || + (dev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW))) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("virtio-keyboard is not supported by this QEMU binary")); goto error; -- 2.7.4

Test for virtio-{keyboard, mouse, tablet}-ccw. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- tests/qemuxml2argvdata/input-virtio-ccw.args | 26 +++++++++++++++++++ tests/qemuxml2argvdata/input-virtio-ccw.xml | 29 +++++++++++++++++++++ tests/qemuxml2argvtest.c | 8 ++++++ tests/qemuxml2xmloutdata/input-virtio-ccw.xml | 37 +++++++++++++++++++++++++++ tests/qemuxml2xmltest.c | 8 ++++++ 5 files changed, 108 insertions(+) create mode 100644 tests/qemuxml2argvdata/input-virtio-ccw.args create mode 100644 tests/qemuxml2argvdata/input-virtio-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/input-virtio-ccw.xml diff --git a/tests/qemuxml2argvdata/input-virtio-ccw.args b/tests/qemuxml2argvdata/input-virtio-ccw.args new file mode 100644 index 0000000..6ee318c --- /dev/null +++ b/tests/qemuxml2argvdata/input-virtio-ccw.args @@ -0,0 +1,26 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-s390x \ +-name QEMUGuest1 \ +-S \ +-M s390-ccw-virtio \ +-m 214 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1803 \ +-nographic \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=readline \ +-boot c \ +-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ +-device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ +id=virtio-disk0 \ +-device virtio-keyboard-ccw,id=input0,devno=fe.0.0002 \ +-device virtio-mouse-ccw,id=input1,devno=fe.0.0003 \ +-device virtio-tablet-ccw,id=input2,devno=fe.0.0004 \ +-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0001 diff --git a/tests/qemuxml2argvdata/input-virtio-ccw.xml b/tests/qemuxml2argvdata/input-virtio-ccw.xml new file mode 100644 index 0000000..a971662 --- /dev/null +++ b/tests/qemuxml2argvdata/input-virtio-ccw.xml @@ -0,0 +1,29 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1803</uuid> + <memory>219136</memory> + <currentMemory>219136</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-s390x</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0'/> + </disk> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x1'/> + </memballoon> + <input type='keyboard' bus='virtio'/> + <input type='mouse' bus='virtio'/> + <input type='tablet' bus='virtio'/> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index d2a1df4..83f30e0 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -3014,6 +3014,14 @@ mymain(void) QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW); + DO_TEST("input-virtio-ccw", QEMU_CAPS_VIRTIO_CCW, + QEMU_CAPS_VIRTIO_KEYBOARD, + QEMU_CAPS_VIRTIO_MOUSE, + QEMU_CAPS_VIRTIO_TABLET, + QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW, + QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW, + QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW); + if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL) virFileDeleteTree(fakerootdir); diff --git a/tests/qemuxml2xmloutdata/input-virtio-ccw.xml b/tests/qemuxml2xmloutdata/input-virtio-ccw.xml new file mode 100644 index 0000000..20aed31 --- /dev/null +++ b/tests/qemuxml2xmloutdata/input-virtio-ccw.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1803</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>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-system-s390x</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </disk> + <input type='keyboard' bus='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/> + </input> + <input type='mouse' bus='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0003'/> + </input> + <input type='tablet' bus='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0004'/> + </input> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/> + </memballoon> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 0ea801b..050c8b7 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -1230,6 +1230,14 @@ mymain(void) QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE); DO_TEST("user-aliases", NONE); + DO_TEST("input-virtio-ccw", + QEMU_CAPS_VIRTIO_CCW, + QEMU_CAPS_VIRTIO_KEYBOARD, + QEMU_CAPS_VIRTIO_MOUSE, + QEMU_CAPS_VIRTIO_TABLET, + QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW, + QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW, + QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW); /* Test disks with format probing enabled for legacy reasons. * New tests should not go in this section. */ -- 2.7.4

Document support for the virtio-gpu-ccw and virtio-{keyboard, mouse, tablet}-ccw devices. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> --- docs/news.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index 6d729d5..bec2790 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -35,6 +35,16 @@ <libvirt> <release version="v4.2.0" date="unreleased"> <section title="New features"> + <change> + <summary> + qemu: Provide ccw address support for graphics and input devices + </summary> + <description> + Support the virtio-gpu-ccw device as a video device and + virtio-{keyboard, mouse, tablet}-ccw devices as input devices + on S390. + </description> + </change> </section> <section title="Improvements"> <change> -- 2.7.4

On Mon, Mar 19, 2018 at 02:35:28PM -0400, Farhan Ali wrote:
Hi,
This patch series adds Libvirt support for video and input devices for QEMU guests on S390. QEMU v2.11.0 added support for the virtio-gpu-ccw device [1] and virtio-{keyboard, mouse, tablet}-ccw devices [2], which can be used as video and input devices respectively.
Thanks Farhan
[1] https://git.qemu.org/?p=qemu.git;a=commit;h=1f8ad88935f5cb5a2968909e392dbeee... [2] https://git.qemu.org/?p=qemu.git;a=commit;h=3382cf1fabbf722dce931846853dae71...
ChangeLog --------- v1 -> v2 - Split virtio-gpu-ccw capability (patch 1) and functionality (patch 2) into 2 patches.
- Code changes per John's comments (patch 2).
- Split capability for input devices (patch 4) and functionality (patch 5) into 2 patches.
- Modify news update as per John's suggestion (patch 7).
Farhan Ali (7): qemu: Introduce a new capability for virtio-gpu-ccw qemu: Add support for virtio-gpu-ccw video device on S390 tests: Add test cases for virtio-gpu-ccw qemu: Introduce capabilities for virtio input ccw devices qemu: Add support for virtio input ccw devices tests: Add test case for virtio input ccw devices news: Update for virtio-gpu-ccw and virtio input ccw devices
Looks good to me. I have some nitpicks re: splitting the changes into patches (which should also apply to the "input" part of the series) Jan

On 03/22/2018 03:32 PM, Ján Tomko wrote:
On Mon, Mar 19, 2018 at 02:35:28PM -0400, Farhan Ali wrote:
Hi,
This patch series adds Libvirt support for video and input devices for QEMU guests on S390. QEMU v2.11.0 added support for the virtio-gpu-ccw device [1] and virtio-{keyboard, mouse, tablet}-ccw devices [2], which can be used as video and input devices respectively.
Thanks Farhan
[1] https://git.qemu.org/?p=qemu.git;a=commit;h=1f8ad88935f5cb5a2968909e392dbeee...
[2] https://git.qemu.org/?p=qemu.git;a=commit;h=3382cf1fabbf722dce931846853dae71...
ChangeLog --------- v1 -> v2 - Split virtio-gpu-ccw capability (patch 1) and functionality (patch 2) into 2 patches.
- Code changes per John's comments (patch 2).
- Split capability for input devices (patch 4) and functionality (patch 5) into 2 patches.
- Modify news update as per John's suggestion (patch 7).
Farhan Ali (7): qemu: Introduce a new capability for virtio-gpu-ccw qemu: Add support for virtio-gpu-ccw video device on S390 tests: Add test cases for virtio-gpu-ccw qemu: Introduce capabilities for virtio input ccw devices qemu: Add support for virtio input ccw devices tests: Add test case for virtio input ccw devices news: Update for virtio-gpu-ccw and virtio input ccw devices
Looks good to me. I have some nitpicks re: splitting the changes into patches (which should also apply to the "input" part of the series)
Jan
Thanks for reviewing :)
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
participants (2)
-
Farhan Ali
-
Ján Tomko