Description of problem: When adding the <parallel> tag to the XML definition of a KVM guest on s390x, libvirt translates this into a "isa-parallel" device when starting QEMU. Since this device does not exist in the s390x version of QEMU, the guest can not be launched. Version-Release number of selected component (if applicable): libvirt-3.2.0-20.el7a.s390x qemu-kvm-2.9.0-22.el7a.s390x How reproducible: 100% Steps to Reproduce: 1. Install qemu-kvm and libvirt on a s390x system 2. Create a guest definition that contains a <parallel> tag, for example: <domain type="kvm"> <name>guest</name> <memory>786432</memory> <vcpu>1</vcpu> <os> <type arch="s390x" machine="s390-ccw-virtio">hvm</type> <boot dev="hd"/> </os> <clock offset="utc"/> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type="file" device="disk"> <driver name="qemu" type="qcow2"/> <source file="/var/lib/libvirt/images/guest.qcow2"/> <target dev="sda" bus="scsi"/> </disk> <interface type="bridge"> <source bridge="virbr0"/> <model type="virtio"/> </interface> <parallel type='pty'/> <console type="pty"/> </devices> </domain> 3. Start the guest with "virsh start guest" Actual results: error: Failed to start domain guest error: internal error: qemu unexpectedly closed the monitor: 2017-09-01T05:35:23.648470Z qemu-kvm: -chardev pty,id=charparallel0: char device redirected to /dev/pts/1 (label charparallel0) 2017-09-01T05:35:23.648555Z qemu-kvm: -chardev pty,id=charconsole0: char device redirected to /dev/pts/2 (label charconsole0) 2017-09-01T05:35:23.667744Z qemu-kvm: -device isa-parallel,chardev=charparallel0,id=parallel0: 'isa-parallel' is not a valid device model name Expected results: Since there are no parallel ports on s390x, I'd rather expect libvirt to refuse the <parallel> tag right from the start here instead of trying to run QEMU with a "isa-parallel" device. Additional info: This is slightly related to bug 1449265 (where the same problems occurs with the <serial> tag).
FWIW: The same problem exists on ppc64, too.
I've just pushed the patches upstream: commit cf4acafe8b03595163e0e06f1e906f9a46d852fd Author: Pino Toscano <ptoscano> AuthorDate: Thu Sep 7 14:19:40 2017 +0200 Commit: Michal Privoznik <mprivozn> CommitDate: Thu Sep 21 13:05:14 2017 +0200 qemu: reject parallel ports for pseries machines They are simply not supported on that machine type. Partially-resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1487499 Signed-off-by: Pino Toscano <ptoscano> commit 02b1908de6e8303e325336277fd9cebba5d6d50d Author: Pino Toscano <ptoscano> AuthorDate: Thu Sep 7 14:19:39 2017 +0200 Commit: Michal Privoznik <mprivozn> CommitDate: Thu Sep 21 13:05:14 2017 +0200 qemu: reject parallel ports for s390 archs They are simply not supported on those architectures. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1487499 Signed-off-by: Pino Toscano <ptoscano> commit 2c79a2b26ccac60042fa355c59882520e65f3f8b Author: Pino Toscano <ptoscano> AuthorDate: Thu Sep 7 14:19:38 2017 +0200 Commit: Michal Privoznik <mprivozn> CommitDate: Thu Sep 21 13:05:14 2017 +0200 qemu: pass the virDomainDef to qemuDomainChrDefValidate This will be used to improve the validation for this type of devices. The former @def parameter is renamed to @dev, leaving @def for the virDomainDef (following the style used elsewhere). Signed-off-by: Pino Toscano <ptoscano> commit 85afb126ad235e9b22d570751fd5eb0aed1eaabe Author: Pino Toscano <ptoscano> AuthorDate: Thu Sep 7 14:19:37 2017 +0200 Commit: Michal Privoznik <mprivozn> CommitDate: Thu Sep 21 13:05:14 2017 +0200 tests: qemuxml2argv: fail also on unexpected pass If a test expects either a parse error or a failure but then there is neither a parse error nor a failure, then properly mark the test as failing, instead of failing later on (e.g. trying to open a non-existing .args file). Signed-off-by: Pino Toscano <ptoscano> commit 4673999d0f725844aebebaf161eefaf6a7e54e17 Author: Pino Toscano <ptoscano> AuthorDate: Thu Sep 7 14:19:36 2017 +0200 Commit: Michal Privoznik <mprivozn> CommitDate: Thu Sep 21 13:05:14 2017 +0200 tests: qemuxml2argv: fix expected type for usb-bus-missing The guest of usb-bus-missing does not cause a parse error, but a validation issue -- hence, switch from DO_TEST_PARSE_ERROR to DO_TEST_FAILURE. Fixes commit b003b9781b6ae633cfe4fdf6b9620ca246fa2432. Signed-off-by: Pino Toscano <ptoscano> v3.7.0-145-gcf4acafe8
Test packages: libvirt-3.9.0-5.el7.s390x qemu-kvm-ma-2.10.0-11.el7.s390x Add <parallel type='pty'/> to the guest and save. # virsh edit vm1 error: unsupported configuration: parallel ports are not supported Failed. Try again? [y,n,i,f,?]:
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2018:0704