[libvirt] [PATCH v2 0/6] support boot from vfio-ccw mdev devices

Changes in v2: 1. moved refactoring into separate patch 2. removed line misalignment 3. moved valition from command line generator into domain xml validation 4. added tests for vfio-ap and vhost scsi Boris Fiuczynski (6): tests: add vfio-ap mdev tests tests: add vhost scsi hostdev boot unsupported test qemu: move hostdev boot validation into domain validation qemu: make error messages device specific qemu: refactor mdev validation method signatures qemu: support bootindex on vfio-ccw mdev devices src/qemu/qemu_command.c | 17 ++---- src/qemu/qemu_domain.c | 53 ++++++++++++++----- .../hostdev-scsi-vhost-scsi-pci-boot-fail.xml | 41 ++++++++++++++ .../hostdev-subsys-mdev-vfio-ap-boot-fail.xml | 23 ++++++++ .../hostdev-subsys-mdev-vfio-ap.args | 28 ++++++++++ .../hostdev-subsys-mdev-vfio-ap.xml | 22 ++++++++ .../hostdev-subsys-mdev-vfio-ccw-boot.args | 29 ++++++++++ .../hostdev-subsys-mdev-vfio-ccw-boot.xml | 23 ++++++++ tests/qemuxml2argvtest.c | 16 ++++++ .../hostdev-subsys-mdev-vfio-ap.xml | 27 ++++++++++ .../hostdev-subsys-mdev-vfio-ccw-boot.xml | 28 ++++++++++ tests/qemuxml2xmltest.c | 8 +++ 12 files changed, 291 insertions(+), 24 deletions(-) create mode 100644 tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.xml create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.args create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.xml create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.args create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.xml create mode 100644 tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ap.xml create mode 100644 tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ccw-boot.xml -- 2.17.0

Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- .../hostdev-subsys-mdev-vfio-ap-boot-fail.xml | 23 +++++++++++++++ .../hostdev-subsys-mdev-vfio-ap.args | 28 +++++++++++++++++++ .../hostdev-subsys-mdev-vfio-ap.xml | 22 +++++++++++++++ tests/qemuxml2argvtest.c | 9 ++++++ .../hostdev-subsys-mdev-vfio-ap.xml | 27 ++++++++++++++++++ tests/qemuxml2xmltest.c | 4 +++ 6 files changed, 113 insertions(+) create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.xml create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.args create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.xml create mode 100644 tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ap.xml diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.xml b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.xml new file mode 100644 index 0000000000..3f9bb64b8b --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.xml @@ -0,0 +1,23 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>524288</memory> + <currentMemory unit='KiB'>524288</currentMemory> + <vcpu placement='static'>2</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> + <hostdev mode='subsystem' type='mdev' model='vfio-ap'> + <source> + <address uuid='90c6c135-ad44-41d0-b1b7-bae47de48627'/> + </source> + <boot order='1'/> + </hostdev> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.args b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.args new file mode 100644 index 0000000000..f9b5d2c84b --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.args @@ -0,0 +1,28 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-QEMUGuest1 \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-s390x \ +-name QEMUGuest1 \ +-S \ +-machine s390-ccw-virtio,accel=tcg,usb=off,dump-guest-core=off \ +-m 512 \ +-realtime mlock=off \ +-smp 2,sockets=2,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-device vfio-ap,id=hostdev0,\ +sysfsdev=/sys/bus/mdev/devices/90c6c135-ad44-41d0-b1b7-bae47de48627 \ +-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0000 diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.xml b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.xml new file mode 100644 index 0000000000..e7370b5838 --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.xml @@ -0,0 +1,22 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>524288</memory> + <currentMemory unit='KiB'>524288</currentMemory> + <vcpu placement='static'>2</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> + <hostdev mode='subsystem' type='mdev' model='vfio-ap'> + <source> + <address uuid='90c6c135-ad44-41d0-b1b7-bae47de48627'/> + </source> + </hostdev> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index c166fd18d6..f113dbb0fd 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1633,6 +1633,15 @@ mymain(void) QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ap", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_AP); + DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ap-boot-fail", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_AP); + DO_TEST_FULL("restore-v2", ARG_MIGRATE_FROM, "exec:cat", ARG_MIGRATE_FD, 7, diff --git a/tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ap.xml b/tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ap.xml new file mode 100644 index 0000000000..afaa9c3e43 --- /dev/null +++ b/tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ap.xml @@ -0,0 +1,27 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>524288</memory> + <currentMemory unit='KiB'>524288</currentMemory> + <vcpu placement='static'>2</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> + <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> + <source> + <address uuid='90c6c135-ad44-41d0-b1b7-bae47de48627'/> + </source> + </hostdev> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </memballoon> + <panic model='s390'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index e67f1c7460..6fa9a26b64 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -958,6 +958,10 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ap", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_AP); DO_TEST("s390-defaultconsole", QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390); -- 2.17.0

On Tue, Aug 13, 2019 at 05:40:25PM +0200, Boris Fiuczynski wrote:
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- .../hostdev-subsys-mdev-vfio-ap-boot-fail.xml | 23 +++++++++++++++ .../hostdev-subsys-mdev-vfio-ap.args | 28 +++++++++++++++++++ .../hostdev-subsys-mdev-vfio-ap.xml | 22 +++++++++++++++ tests/qemuxml2argvtest.c | 9 ++++++ .../hostdev-subsys-mdev-vfio-ap.xml | 27 ++++++++++++++++++ tests/qemuxml2xmltest.c | 4 +++ 6 files changed, 113 insertions(+) create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.xml create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.args create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap.xml create mode 100644 tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ap.xml
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index c166fd18d6..f113dbb0fd 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1633,6 +1633,15 @@ mymain(void) QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW);
+ DO_TEST("hostdev-subsys-mdev-vfio-ap", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_AP); + DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ap-boot-fail", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_AP); +
I see both: <flag name='virtual-css-bridge.cssid-unrestricted'/> and <flag name='vfio-ap'/> in tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml Can you use DO_TEST_CAPS_ARCH_LATEST and DO_TEST_CAPS_ARCH_LATEST_FAILURE instead, to test against real QEMU capabilities instead of enumerating them? Jano
DO_TEST_FULL("restore-v2", ARG_MIGRATE_FROM, "exec:cat", ARG_MIGRATE_FD, 7,

Adding a failure test for booting from a vhost scsi hostdev device. Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- .../hostdev-scsi-vhost-scsi-pci-boot-fail.xml | 41 +++++++++++++++++++ tests/qemuxml2argvtest.c | 3 ++ 2 files changed, 44 insertions(+) create mode 100644 tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml diff --git a/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml b/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml new file mode 100644 index 0000000000..94f590b11b --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest2</name> + <uuid>c7a5fdbd-edaf-9466-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> + </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-i686</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='scsi' index='0' model='virtio-scsi'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </controller> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <hostdev mode='subsystem' type='scsi_host' managed='no'> + <source protocol='vhost' wwpn='naa.5123456789abcde0'/> + <boot order='1'/> + </hostdev> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index f113dbb0fd..5f94780f61 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2444,6 +2444,9 @@ mymain(void) DO_TEST("hostdev-scsi-vhost-scsi-pci", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); + DO_TEST_FAILURE("hostdev-scsi-vhost-scsi-pci-boot-fail", + QEMU_CAPS_VIRTIO_SCSI, + QEMU_CAPS_DEVICE_VHOST_SCSI); DO_TEST("hostdev-scsi-vhost-scsi-pcie", QEMU_CAPS_KVM, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI, -- 2.17.0

On Tue, Aug 13, 2019 at 05:40:26PM +0200, Boris Fiuczynski wrote:
Adding a failure test for booting from a vhost scsi hostdev device.
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- .../hostdev-scsi-vhost-scsi-pci-boot-fail.xml | 41 +++++++++++++++++++ tests/qemuxml2argvtest.c | 3 ++ 2 files changed, 44 insertions(+) create mode 100644 tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml
diff --git a/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml b/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml new file mode 100644 index 0000000000..94f590b11b --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest2</name> + <uuid>c7a5fdbd-edaf-9466-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> + </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-i686</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='scsi' index='0' model='virtio-scsi'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </controller> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <hostdev mode='subsystem' type='scsi_host' managed='no'> + <source protocol='vhost' wwpn='naa.5123456789abcde0'/> + <boot order='1'/> + </hostdev> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index f113dbb0fd..5f94780f61 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2444,6 +2444,9 @@ mymain(void) DO_TEST("hostdev-scsi-vhost-scsi-pci", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); + DO_TEST_FAILURE("hostdev-scsi-vhost-scsi-pci-boot-fail", + QEMU_CAPS_VIRTIO_SCSI, + QEMU_CAPS_DEVICE_VHOST_SCSI);
DO_TEST_CAPS_LATEST_FAILURE here Jano
DO_TEST("hostdev-scsi-vhost-scsi-pcie", QEMU_CAPS_KVM, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI, -- 2.17.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Moving the hostdev boot support validation from the command line generator code into the domain validation code. Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_command.c | 13 +------------ src/qemu/qemu_domain.c | 13 +++++++++++++ tests/qemuxml2argvtest.c | 4 ++-- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f096e8f27e..d32ffed5d6 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5625,6 +5625,7 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def, return ret; } + static int qemuBuildHostdevCommandLine(virCommandPtr cmd, const virDomainDef *def, @@ -5638,18 +5639,6 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, virDomainHostdevSubsysPtr subsys = &hostdev->source.subsys; char *devstr; - if (hostdev->info->bootIndex) { - if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || - (subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI && - subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB && - subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("booting from assigned devices is only " - "supported for PCI, USB and SCSI devices")); - return -1; - } - } - /* USB */ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index b9c5a4e541..ce5334aa67 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5263,9 +5263,22 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: + break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is only " + "supported for PCI, USB and SCSI devices")); + return -1; + } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is only " + "supported for PCI, USB and SCSI devices")); + return -1; + } mdevsrc = &hostdev->source.subsys.u.mdev; return qemuDomainMdevDefValidate(mdevsrc, def, qemuCaps); case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5f94780f61..e378df097c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1637,7 +1637,7 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_AP); - DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ap-boot-fail", + DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ap-boot-fail", QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_AP); @@ -2444,7 +2444,7 @@ mymain(void) DO_TEST("hostdev-scsi-vhost-scsi-pci", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); - DO_TEST_FAILURE("hostdev-scsi-vhost-scsi-pci-boot-fail", + DO_TEST_PARSE_ERROR("hostdev-scsi-vhost-scsi-pci-boot-fail", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); DO_TEST("hostdev-scsi-vhost-scsi-pcie", -- 2.17.0

On Tue, Aug 13, 2019 at 05:40:27PM +0200, Boris Fiuczynski wrote:
Moving the hostdev boot support validation from the command line generator code into the domain validation code.
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_command.c | 13 +------------ src/qemu/qemu_domain.c | 13 +++++++++++++ tests/qemuxml2argvtest.c | 4 ++-- 3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f096e8f27e..d32ffed5d6 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5625,6 +5625,7 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def, return ret; }
+
Unrelated whitespace change
static int qemuBuildHostdevCommandLine(virCommandPtr cmd, const virDomainDef *def, @@ -5638,18 +5639,6 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, virDomainHostdevSubsysPtr subsys = &hostdev->source.subsys; char *devstr;
- if (hostdev->info->bootIndex) { - if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || - (subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI && - subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB && - subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("booting from assigned devices is only " - "supported for PCI, USB and SCSI devices")); - return -1; - } - } - /* USB */ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index b9c5a4e541..ce5334aa67 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5263,9 +5263,22 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: + break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is only " + "supported for PCI, USB and SCSI devices")); + return -1; + } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is only " + "supported for PCI, USB and SCSI devices")); + return -1; + } mdevsrc = &hostdev->source.subsys.u.mdev; return qemuDomainMdevDefValidate(mdevsrc, def, qemuCaps); case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5f94780f61..e378df097c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1637,7 +1637,7 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_AP); - DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ap-boot-fail", + DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ap-boot-fail",
This will become DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR
QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_AP); @@ -2444,7 +2444,7 @@ mymain(void) DO_TEST("hostdev-scsi-vhost-scsi-pci", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); - DO_TEST_FAILURE("hostdev-scsi-vhost-scsi-pci-boot-fail", + DO_TEST_PARSE_ERROR("hostdev-scsi-vhost-scsi-pci-boot-fail",
DO_TEST_CAPS_LATEST_PARSE_ERROR Jano
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); DO_TEST("hostdev-scsi-vhost-scsi-pcie", -- 2.17.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Changing the error messages to report the problem encountered. Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_domain.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ce5334aa67..9a9b6676e3 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5267,16 +5267,16 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: if (hostdev->info->bootIndex) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("booting from assigned devices is only " - "supported for PCI, USB and SCSI devices")); + _("booting from assigned devices is not " + "supported by vhost SCSI devices")); return -1; } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: if (hostdev->info->bootIndex) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("booting from assigned devices is only " - "supported for PCI, USB and SCSI devices")); + _("booting from assigned devices is not " + "supported by mediated devices")); return -1; } mdevsrc = &hostdev->source.subsys.u.mdev; -- 2.17.0

On Tue, Aug 13, 2019 at 05:40:28PM +0200, Boris Fiuczynski wrote:
Changing the error messages to report the problem encountered.
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_domain.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Refactoring the method signatures in preparation for checking boot index of the mediated devices. Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_domain.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 9a9b6676e3..7331d93868 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5158,10 +5158,13 @@ qemuDomainDeviceDefValidateNetwork(const virDomainNetDef *net) static int -qemuDomainMdevDefVFIOPCIValidate(const virDomainHostdevSubsysMediatedDev *dev, +qemuDomainMdevDefVFIOPCIValidate(const virDomainHostdevDef *hostdev, const virDomainDef *def, virQEMUCapsPtr qemuCaps) { + const virDomainHostdevSubsysMediatedDev *dev; + + dev = &hostdev->source.subsys.u.mdev; if (dev->display == VIR_TRISTATE_SWITCH_ABSENT) return 0; @@ -5194,17 +5197,18 @@ qemuDomainMdevDefVFIOPCIValidate(const virDomainHostdevSubsysMediatedDev *dev, static int -qemuDomainMdevDefVFIOAPValidate(const virDomainDef *def) +qemuDomainMdevDefVFIOAPValidate(const virDomainHostdevDef *hostdev ATTRIBUTE_UNUSED, + const virDomainDef *def) { size_t i; bool vfioap_found = false; /* VFIO-AP is restricted to a single mediated device only */ for (i = 0; i < def->nhostdevs; i++) { - virDomainHostdevDefPtr hostdev = def->hostdevs[i]; + virDomainHostdevDefPtr hdev = def->hostdevs[i]; - if (virHostdevIsMdevDevice(hostdev) && - hostdev->source.subsys.u.mdev.model == VIR_MDEV_MODEL_TYPE_VFIO_AP) { + if (virHostdevIsMdevDevice(hdev) && + hdev->source.subsys.u.mdev.model == VIR_MDEV_MODEL_TYPE_VFIO_AP) { if (vfioap_found) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Only one hostdev of model vfio-ap is " @@ -5220,15 +5224,18 @@ qemuDomainMdevDefVFIOAPValidate(const virDomainDef *def) static int -qemuDomainMdevDefValidate(const virDomainHostdevSubsysMediatedDev *mdevsrc, +qemuDomainMdevDefValidate(const virDomainHostdevDef *hostdev, const virDomainDef *def, virQEMUCapsPtr qemuCaps) { + const virDomainHostdevSubsysMediatedDev *mdevsrc; + + mdevsrc = &hostdev->source.subsys.u.mdev; switch ((virMediatedDeviceModelType) mdevsrc->model) { case VIR_MDEV_MODEL_TYPE_VFIO_PCI: - return qemuDomainMdevDefVFIOPCIValidate(mdevsrc, def, qemuCaps); + return qemuDomainMdevDefVFIOPCIValidate(hostdev, def, qemuCaps); case VIR_MDEV_MODEL_TYPE_VFIO_AP: - return qemuDomainMdevDefVFIOAPValidate(def); + return qemuDomainMdevDefVFIOAPValidate(hostdev, def); case VIR_MDEV_MODEL_TYPE_VFIO_CCW: break; case VIR_MDEV_MODEL_TYPE_LAST: @@ -5247,8 +5254,6 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, const virDomainDef *def, virQEMUCapsPtr qemuCaps) { - const virDomainHostdevSubsysMediatedDev *mdevsrc; - /* forbid capabilities mode hostdev in this kind of hypervisor */ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -5279,8 +5284,7 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, "supported by mediated devices")); return -1; } - mdevsrc = &hostdev->source.subsys.u.mdev; - return qemuDomainMdevDefValidate(mdevsrc, def, qemuCaps); + return qemuDomainMdevDefValidate(hostdev, def, qemuCaps); case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: default: virReportEnumRangeError(virDomainHostdevSubsysType, -- 2.17.0

On Tue, Aug 13, 2019 at 05:40:29PM +0200, Boris Fiuczynski wrote:
Refactoring the method signatures in preparation for checking boot index of the mediated devices.
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_domain.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Add support to specify a boot order on vfio-ccw passthrough devices. Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_command.c | 4 +++ src/qemu/qemu_domain.c | 26 ++++++++++++----- .../hostdev-subsys-mdev-vfio-ccw-boot.args | 29 +++++++++++++++++++ .../hostdev-subsys-mdev-vfio-ccw-boot.xml | 23 +++++++++++++++ tests/qemuxml2argvtest.c | 4 +++ .../hostdev-subsys-mdev-vfio-ccw-boot.xml | 28 ++++++++++++++++++ tests/qemuxml2xmltest.c | 4 +++ 7 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.args create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.xml create mode 100644 tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ccw-boot.xml diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index d32ffed5d6..db004bf095 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5585,6 +5585,7 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, return ret; } + char * qemuBuildHostdevMediatedDevStr(const virDomainDef *def, virDomainHostdevDefPtr dev, @@ -5614,6 +5615,9 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def, if (qemuBuildDeviceAddressStr(&buf, def, dev->info, qemuCaps) < 0) goto cleanup; + if (dev->info->bootIndex) + virBufferAsprintf(&buf, ",bootindex=%u", dev->info->bootIndex); + if (virBufferCheckError(&buf) < 0) goto cleanup; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7331d93868..9ff28bdbf5 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5164,6 +5164,15 @@ qemuDomainMdevDefVFIOPCIValidate(const virDomainHostdevDef *hostdev, { const virDomainHostdevSubsysMediatedDev *dev; + /* VFIO-PCI does not support boot */ + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is not " + "supported by mediated devices of " + "model vfio-pci")); + return -1; + } + dev = &hostdev->source.subsys.u.mdev; if (dev->display == VIR_TRISTATE_SWITCH_ABSENT) return 0; @@ -5197,12 +5206,21 @@ qemuDomainMdevDefVFIOPCIValidate(const virDomainHostdevDef *hostdev, static int -qemuDomainMdevDefVFIOAPValidate(const virDomainHostdevDef *hostdev ATTRIBUTE_UNUSED, +qemuDomainMdevDefVFIOAPValidate(const virDomainHostdevDef *hostdev, const virDomainDef *def) { size_t i; bool vfioap_found = false; + /* VFIO-AP does not support boot */ + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is not " + "supported by mediated devices of " + "model vfio-ap")); + return -1; + } + /* VFIO-AP is restricted to a single mediated device only */ for (i = 0; i < def->nhostdevs; i++) { virDomainHostdevDefPtr hdev = def->hostdevs[i]; @@ -5278,12 +5296,6 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: - if (hostdev->info->bootIndex) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("booting from assigned devices is not " - "supported by mediated devices")); - return -1; - } return qemuDomainMdevDefValidate(hostdev, def, qemuCaps); case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: default: diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.args b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.args new file mode 100644 index 0000000000..6fb22b3014 --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.args @@ -0,0 +1,29 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-QEMUGuest1 \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-s390x \ +-name QEMUGuest1 \ +-S \ +-machine s390-ccw-virtio,accel=tcg,usb=off,dump-guest-core=off \ +-m 512 \ +-realtime mlock=off \ +-smp 2,sockets=2,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-device vfio-ccw,id=hostdev0,\ +sysfsdev=/sys/bus/mdev/devices/90c6c135-ad44-41d0-b1b7-bae47de48627,\ +devno=fe.0.0000,bootindex=1 \ +-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0001 diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.xml b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.xml new file mode 100644 index 0000000000..6cca13c33f --- /dev/null +++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.xml @@ -0,0 +1,23 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>524288</memory> + <currentMemory unit='KiB'>524288</currentMemory> + <vcpu placement='static'>2</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> + <hostdev mode='subsystem' type='mdev' model='vfio-ccw'> + <source> + <address uuid='90c6c135-ad44-41d0-b1b7-bae47de48627'/> + </source> + <boot order='1'/> + </hostdev> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index e378df097c..e916c14cf4 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1621,6 +1621,10 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ccw-boot", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_CCW); DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ccw", QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED); diff --git a/tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ccw-boot.xml b/tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ccw-boot.xml new file mode 100644 index 0000000000..ab387a5198 --- /dev/null +++ b/tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ccw-boot.xml @@ -0,0 +1,28 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>524288</memory> + <currentMemory unit='KiB'>524288</currentMemory> + <vcpu placement='static'>2</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> + <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ccw'> + <source> + <address uuid='90c6c135-ad44-41d0-b1b7-bae47de48627'/> + </source> + <boot order='1'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </hostdev> + <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 6fa9a26b64..6f672184be 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -958,6 +958,10 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ccw-boot", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_CCW); DO_TEST("hostdev-subsys-mdev-vfio-ap", QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, -- 2.17.0

On Tue, Aug 13, 2019 at 05:40:30PM +0200, Boris Fiuczynski wrote:
Add support to specify a boot order on vfio-ccw passthrough devices.
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- src/qemu/qemu_command.c | 4 +++ src/qemu/qemu_domain.c | 26 ++++++++++++----- .../hostdev-subsys-mdev-vfio-ccw-boot.args | 29 +++++++++++++++++++ .../hostdev-subsys-mdev-vfio-ccw-boot.xml | 23 +++++++++++++++ tests/qemuxml2argvtest.c | 4 +++ .../hostdev-subsys-mdev-vfio-ccw-boot.xml | 28 ++++++++++++++++++ tests/qemuxml2xmltest.c | 4 +++ 7 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.args create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-boot.xml create mode 100644 tests/qemuxml2xmloutdata/hostdev-subsys-mdev-vfio-ccw-boot.xml
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 6fa9a26b64..6f672184be 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -958,6 +958,10 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ccw-boot", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_CCW);
DO_TEST_CAPS_ARCH_LATEST Jano
DO_TEST("hostdev-subsys-mdev-vfio-ap", QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, -- 2.17.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Ján Tomko <jtomko@redhat.com> [2019-08-27, 01:51PM +0200]:
On Tue, Aug 13, 2019 at 05:40:30PM +0200, Boris Fiuczynski wrote:
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 6fa9a26b64..6f672184be 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -958,6 +958,10 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ccw-boot", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_CCW);
DO_TEST_CAPS_ARCH_LATEST
Thanks for the review, much appreciated. v3 is sent. Out of curiosity and for future reference, the DO_TEST_*_LATEST macros are preferred for new tests now? Are the old test macros deprecated and should we convert older tests?

On Tue, Aug 27, 2019 at 16:22:02 +0200, Bjoern Walk wrote:
Ján Tomko <jtomko@redhat.com> [2019-08-27, 01:51PM +0200]:
On Tue, Aug 13, 2019 at 05:40:30PM +0200, Boris Fiuczynski wrote:
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 6fa9a26b64..6f672184be 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -958,6 +958,10 @@ mymain(void) QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, QEMU_CAPS_DEVICE_VFIO_CCW); + DO_TEST("hostdev-subsys-mdev-vfio-ccw-boot", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, + QEMU_CAPS_DEVICE_VFIO_CCW);
DO_TEST_CAPS_ARCH_LATEST
Thanks for the review, much appreciated. v3 is sent.
Out of curiosity and for future reference, the DO_TEST_*_LATEST macros are preferred for new tests now? Are the old test macros deprecated and should we convert older tests?
There are a handful of specific scenarios where the old macro might be worth using, but generally, the _LATEST or _VER macros should be used with actual real capabilities. Converting the existing test cases to the new macros is obviously welcome but nobody really works on in systematically. If you are willing to convert any number of tests, it's obviously welcome.

Boris Fiuczynski <fiuczy@linux.ibm.com> [2019-08-13, 05:40PM +0200]:
Changes in v2: 1. moved refactoring into separate patch 2. removed line misalignment 3. moved valition from command line generator into domain xml validation 4. added tests for vfio-ap and vhost scsi
ping. Anyone wants to have a look? -- IBM Systems Linux on Z & Virtualization Development -------------------------------------------------- IBM Deutschland Research & Development GmbH Schönaicher Str. 220, 71032 Böblingen Phone: +49 7031 16 1819 -------------------------------------------------- Vorsitzende des Aufsichtsrats: Matthias Hartmann Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294

Bjoern Walk <bwalk@linux.ibm.com> [2019-08-20, 12:19PM +0200]:
Boris Fiuczynski <fiuczy@linux.ibm.com> [2019-08-13, 05:40PM +0200]:
Changes in v2: 1. moved refactoring into separate patch 2. removed line misalignment 3. moved valition from command line generator into domain xml validation 4. added tests for vfio-ap and vhost scsi
ping. Anyone wants to have a look?
ping^2 :) -- IBM Systems Linux on Z & Virtualization Development -------------------------------------------------- IBM Deutschland Research & Development GmbH Schönaicher Str. 220, 71032 Böblingen Phone: +49 7031 16 1819 -------------------------------------------------- Vorsitzende des Aufsichtsrats: Matthias Hartmann Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294
participants (4)
-
Bjoern Walk
-
Boris Fiuczynski
-
Ján Tomko
-
Peter Krempa