On 07/10/2018 01:37 PM, Ján Tomko wrote:
On Wed, Jul 04, 2018 at 01:21:44PM +0200, Boris Fiuczynski wrote:
> Add support and tests for vhost-vsock-ccw.
>
> Signed-off-by: Boris Fiuczynski <fiuczy(a)linux.ibm.com>
> ---
> src/qemu/qemu_command.c | 15 +++++++--
> src/qemu/qemu_domain_address.c | 7 +++-
> .../vhost-vsock-ccw-auto.args | 27 ++++++++++++++++
> .../qemuxml2argvdata/vhost-vsock-ccw-auto.xml | 25 +++++++++++++++
> tests/qemuxml2argvdata/vhost-vsock-ccw.args | 27 ++++++++++++++++
> tests/qemuxml2argvdata/vhost-vsock-ccw.xml | 32 +++++++++++++++++++
> tests/qemuxml2argvtest.c | 4 +++
> .../vhost-vsock-ccw-auto.xml | 32 +++++++++++++++++++
> tests/qemuxml2xmloutdata/vhost-vsock-ccw.xml | 1 +
> tests/qemuxml2xmltest.c | 5 +++
> 10 files changed, 172 insertions(+), 3 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/vhost-vsock-ccw-auto.args
> create mode 100644 tests/qemuxml2argvdata/vhost-vsock-ccw-auto.xml
> create mode 100644 tests/qemuxml2argvdata/vhost-vsock-ccw.args
> create mode 100644 tests/qemuxml2argvdata/vhost-vsock-ccw.xml
> create mode 100644 tests/qemuxml2xmloutdata/vhost-vsock-ccw-auto.xml
> create mode 120000 tests/qemuxml2xmloutdata/vhost-vsock-ccw.xml
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 04c5c28438..ab6944f68e 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -10089,10 +10089,21 @@ qemuBuildVsockDevStr(virDomainDefPtr def,
> {
> qemuDomainVsockPrivatePtr priv =
> (qemuDomainVsockPrivatePtr)vsock->privateData;
> virBuffer buf = VIR_BUFFER_INITIALIZER;
> - const char *device = "vhost-vsock-pci";
> char *ret = NULL;
> + const char *devsuffix;
>
> - virBufferAsprintf(&buf, "%s", device);
> + if (vsock->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
> + devsuffix = "pci";
> + } else if (vsock->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) {
> + devsuffix = "ccw";
> + } else {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> + _("unsupported address type %s for vsock
> device"),
> +
> virDomainDeviceAddressTypeToString(vsock->info.type));
> + goto cleanup;
> + }
This check belongs in qemuDomainDeviceDefValidateVsock
Changed it.
> +
> + virBufferAsprintf(&buf, "vhost-vsock-%s", devsuffix);
Having the whole device name in one string would be nicer than dealing
with the device suffix, e.g.:
if (type == _CCW)
device = "vhost-vsock-ccw"
else
device = "vhost-vsock-pci"
(or even virBufferAddLit, without the temporary variable - I forgot what
led me to use it)
Changed it.
> virBufferAsprintf(&buf, ",id=%s", vsock->info.alias);
> virBufferAsprintf(&buf, ",guest-cid=%u", vsock->guest_cid);
> virBufferAsprintf(&buf, ",vhostfd=%s%u", fdprefix,
priv->vhostfd);
> diff --git a/src/qemu/qemu_domain_address.c
> b/src/qemu/qemu_domain_address.c
> index eb11a660d7..9639595175 100644
> --- a/src/qemu/qemu_domain_address.c
> +++ b/src/qemu/qemu_domain_address.c
> @@ -306,7 +306,8 @@
> qemuDomainPrimeVirtioDeviceAddresses(virDomainDefPtr def,
> declare address-less virtio devices to be of address type 'type'
> 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
> + if type is ccw filesystem and vsock devices are declared to be of
> + address type ccw
> */
This whole comment is pointless - it's repeating what the function does,
not why.
Well I did not create the original comment but adjusted it for
completeness. Since the function name is not really speaking for itself
I kind of understand the intend. Do you suggest that I should delete the
comment completely?
> size_t i;
>
[...]
> + <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>
> + <memballoon model='virtio'>
> + <address type='ccw' cssid='0xfe' ssid='0x0'
devno='0x0001'/>
> + </memballoon>
> + <panic model='s390'/>
> + <vsock model='virtio'>
> + <cid auto='no' address='4'/>
> + <address type='ccw' cssid='0xfe' ssid='0x0'
devno='0x0003'/>
> + </vsock>
> + </devices>
> +</domain>
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index d6911f9344..60bd9585e5 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -2914,6 +2914,10 @@ mymain(void)
>
> DO_TEST_CAPS_LATEST("vhost-vsock");
> DO_TEST_CAPS_LATEST("vhost-vsock-auto");
> + DO_TEST("vhost-vsock-ccw", QEMU_CAPS_DEVICE_VHOST_VSOCK,
> + QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
> + DO_TEST("vhost-vsock-ccw-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK,
> + QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
It would be nice to extend the LATEST caps coverage to s390 as well, to
make sure that adding a new capability won't affect the vsock device.
I agree
and John already made me aware of that. Have not yet gotten to
it but soon hope to. Can we leave it as is for now and change it when
LATEST caps has been extended to s390?
Jano
--
libvir-list mailing list
libvir-list(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
--
Mit freundlichen Grüßen/Kind regards
Boris Fiuczynski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martina Köderitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294