[libvirt PATCH v2 0/4] qemu: Add support for VMware paravirtual SCSI controller

QEMU has supported pvscsi, the VMware paravirtual SCSI controller, since 2013, but libvirt does not currently expose support for it. Adding such support is straightforward. I have tested it with a Windows 10 guest, and the official VMware driver supports it with no issues. However, booting only works with SeaBIOS (tested) and the pre-release version of OVMF (not tested yet). Chris Jester-Young (4): qemu: pvscsi: Add capability qemu: pvscsi: Add support for vmpvscsi controller model tests: qemuxml2xmltest: Convert disk-scsi to DO_TEST_CAPS_LATEST tests: qemuxml2argvtest: Add vmpvscsi to disk-scsi test src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 4 +- src/qemu/qemu_validate.c | 9 ++++- .../caps_1.5.3.x86_64.xml | 1 + .../caps_1.6.0.x86_64.xml | 1 + .../caps_1.7.0.x86_64.xml | 1 + .../caps_2.1.1.x86_64.xml | 1 + .../caps_2.10.0.aarch64.xml | 1 + .../caps_2.10.0.ppc64.xml | 1 + .../caps_2.10.0.x86_64.xml | 1 + .../caps_2.11.0.x86_64.xml | 1 + .../caps_2.12.0.aarch64.xml | 1 + .../caps_2.12.0.ppc64.xml | 1 + .../caps_2.12.0.x86_64.xml | 1 + .../caps_2.4.0.x86_64.xml | 1 + .../caps_2.5.0.x86_64.xml | 1 + .../caps_2.6.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 + .../caps_2.6.0.x86_64.xml | 1 + .../caps_2.7.0.x86_64.xml | 1 + .../caps_2.8.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 + .../caps_2.9.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + .../caps_3.0.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 + .../caps_3.1.0.x86_64.xml | 1 + .../caps_4.0.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 + .../caps_4.0.0.riscv32.xml | 1 + .../caps_4.0.0.riscv64.xml | 1 + .../caps_4.0.0.x86_64.xml | 1 + .../caps_4.1.0.x86_64.xml | 1 + .../caps_4.2.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 + .../caps_4.2.0.x86_64.xml | 1 + .../caps_5.0.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + .../caps_5.0.0.riscv64.xml | 1 + .../caps_5.0.0.x86_64.xml | 1 + .../caps_5.1.0.x86_64.xml | 1 + .../disk-scsi.x86_64-latest.args | 37 +++++++++++-------- tests/qemuxml2argvdata/disk-scsi.xml | 6 +++ ...k-scsi.xml => disk-scsi.x86_64-latest.xml} | 20 ++++++++-- tests/qemuxml2xmltest.c | 3 +- 46 files changed, 97 insertions(+), 23 deletions(-) rename tests/qemuxml2xmloutdata/{disk-scsi.xml => disk-scsi.x86_64-latest.xml} (83%) -- 2.25.1

This capability flags support for `-device pvscsi`, which provides the VMware paravirtual SCSI controller. Signed-off-by: Chris Jester-Young <cky@cky.nz> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 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.10.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.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.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 + 40 files changed, 41 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 0e7db2643a..7e711f22f8 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -581,6 +581,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "machine.pseries.cap-ibs", "tcg", "virtio-blk-pci.scsi.default.disabled", + "pvscsi", ); @@ -1302,6 +1303,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "tpm-spapr", QEMU_CAPS_DEVICE_TPM_SPAPR }, { "vhost-user-fs-device", QEMU_CAPS_DEVICE_VHOST_USER_FS }, { "tcg-accel", QEMU_CAPS_TCG }, + { "pvscsi", QEMU_CAPS_SCSI_PVSCSI }, }; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index db8bebe3df..6bfc7386e3 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -562,6 +562,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_MACHINE_PSERIES_CAP_IBS, /* -machine pseries.cap-ibs */ QEMU_CAPS_TCG, /* QEMU does support TCG */ QEMU_CAPS_VIRTIO_BLK_SCSI_DEFAULT_DISABLED, /* virtio-blk-pci.scsi disabled by default */ + QEMU_CAPS_SCSI_PVSCSI, /* -device pvscsi */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 2ba184cdda..a4f6c3aa09 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -86,6 +86,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>1005003</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100245</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index fb160dfd4c..9e5501bed9 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -91,6 +91,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>1006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100243</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 732af17233..28eb61b38c 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -93,6 +93,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>1007000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 22b4817e4e..cfe79fef46 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -109,6 +109,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2001001</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index 8c2f8be55d..cfa1962e98 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -141,6 +141,7 @@ <flag name='egl-headless'/> <flag name='iothread.poll-max-ns'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index cec361b60c..0eee26c3ac 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -141,6 +141,7 @@ <flag name='iothread.poll-max-ns'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml index 4a8bc42778..205a0675db 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml @@ -184,6 +184,7 @@ <flag name='x86-max-cpu'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml index 03ba191bc2..15f59774f3 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml @@ -190,6 +190,7 @@ <flag name='x86-max-cpu'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2011000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100288</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml index 025130c378..94a0344b1a 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -157,6 +157,7 @@ <flag name='arm-max-cpu'/> <flag name='drive-nvme'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2012000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml index 06ee1f4ec4..3bf0e20c9b 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -158,6 +158,7 @@ <flag name='machine.pseries.cap-sbbc'/> <flag name='machine.pseries.cap-ibs'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml index 3e86df890b..c249525547 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -199,6 +199,7 @@ <flag name='drive-nvme'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml index a11659d617..6eebad8b03 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -135,6 +135,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2004000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml index 432e3a5af4..662140e657 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -141,6 +141,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2005000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100243</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml index 389f7af1d6..f8f57a7eaa 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml @@ -124,6 +124,7 @@ <flag name='sdl-gl'/> <flag name='hda-output'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml index cdf9450f4a..52592ad138 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml @@ -120,6 +120,7 @@ <flag name='hda-output'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml index 4b6b840496..77297fff36 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -153,6 +153,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml index 1fa9a37102..e7d9808e28 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml @@ -158,6 +158,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2007000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100245</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml index 2847ad711f..bfeb9c9b40 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml @@ -161,6 +161,7 @@ <flag name='mch'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2008000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100246</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml index 539b5e042d..f32e233549 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml @@ -133,6 +133,7 @@ <flag name='iothread.poll-max-ns'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml index 765e469205..75e9905df7 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml @@ -178,6 +178,7 @@ <flag name='x86-max-cpu'/> <flag name='i8042'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml index c9c2ac4a0b..a66008b0de 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -160,6 +160,7 @@ <flag name='machine.pseries.cap-sbbc'/> <flag name='machine.pseries.cap-ibs'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>2012050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml index 2f318640d8..f5f1d5b466 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -205,6 +205,7 @@ <flag name='i8042'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml index 18fba375fb..ca9ff82e28 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml @@ -165,6 +165,7 @@ <flag name='machine.pseries.cap-sbbc'/> <flag name='machine.pseries.cap-ibs'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>3000091</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml index 6a05b3e719..11009a2f80 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml @@ -208,6 +208,7 @@ <flag name='i8042'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>3000092</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml index 2e8460f829..c9199df261 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml @@ -171,6 +171,7 @@ <flag name='drive-nvme'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml index 978fad0ba6..f4294436a8 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml @@ -179,6 +179,7 @@ <flag name='machine.pseries.cap-sbbc'/> <flag name='machine.pseries.cap-ibs'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml index 4322ca3593..f5c9d7f83e 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml @@ -172,6 +172,7 @@ <flag name='drive-nvme'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml index 8df0e1eb79..538ce225f8 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml @@ -172,6 +172,7 @@ <flag name='drive-nvme'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml index 4285bec2bf..9f45fe6359 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml @@ -213,6 +213,7 @@ <flag name='i8042'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml index 1c960faa6c..9ad50bc2b5 100644 --- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml @@ -219,6 +219,7 @@ <flag name='i8042'/> <flag name='storage.werror'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4001000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 418b5937a0..7aca4fe022 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -183,6 +183,7 @@ <flag name='fsdev.multidevs'/> <flag name='virtio.packed'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4001050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml index 796ed0a2bc..a68786ddc8 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -184,6 +184,7 @@ <flag name='machine.pseries.cap-sbbc'/> <flag name='machine.pseries.cap-ibs'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4001050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index 0d4d6e71d5..3935be4813 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -227,6 +227,7 @@ <flag name='fsdev.multidevs'/> <flag name='virtio.packed'/> <flag name='tcg'/> + <flag name='pvscsi'/> <version>4002000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index 618ad8ee14..7649153cfd 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -192,6 +192,7 @@ <flag name='pcie-root-port.hotplug'/> <flag name='tcg'/> <flag name='virtio-blk-pci.scsi.default.disabled'/> + <flag name='pvscsi'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml index 0f5dce9264..c8cc07d954 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -200,6 +200,7 @@ <flag name='machine.pseries.cap-ibs'/> <flag name='tcg'/> <flag name='virtio-blk-pci.scsi.default.disabled'/> + <flag name='pvscsi'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml index bc6a27e87e..7a091d27db 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -188,6 +188,7 @@ <flag name='aio.io_uring'/> <flag name='tcg'/> <flag name='virtio-blk-pci.scsi.default.disabled'/> + <flag name='pvscsi'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index ed4c08e99e..e28e87fd23 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -233,6 +233,7 @@ <flag name='aio.io_uring'/> <flag name='tcg'/> <flag name='virtio-blk-pci.scsi.default.disabled'/> + <flag name='pvscsi'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index f7018daa84..8c20b5fe5c 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -233,6 +233,7 @@ <flag name='aio.io_uring'/> <flag name='tcg'/> <flag name='virtio-blk-pci.scsi.default.disabled'/> + <flag name='pvscsi'/> <version>5000050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> -- 2.25.1

Availability of the vmpvscsi controller model is gated by the pvscsi capability. Signed-off-by: Chris Jester-Young <cky@cky.nz> --- src/qemu/qemu_command.c | 4 +++- src/qemu/qemu_validate.c | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 2d8a6fb0dd..bfe70ed228 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2573,9 +2573,11 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: virBufferAddLit(&buf, "megasas"); break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: + virBufferAddLit(&buf, "pvscsi"); + break; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller model: %s"), virDomainControllerModelSCSITypeToString(def->model)); diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index d34151050f..fde1892d42 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -2362,9 +2362,16 @@ qemuValidateCheckSCSIControllerModel(virQEMUCapsPtr qemuCaps, return false; } break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_PVSCSI)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("This QEMU doesn't support " + "the pvscsi (VMware paravirtual SCSI) controller")); + return false; + } + break; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller model: %s"), virDomainControllerModelSCSITypeToString(model)); -- 2.25.1

Signed-off-by: Chris Jester-Young <cky@cky.nz> --- .../{disk-scsi.xml => disk-scsi.x86_64-latest.xml} | 13 ++++++++----- tests/qemuxml2xmltest.c | 3 +-- 2 files changed, 9 insertions(+), 7 deletions(-) rename tests/qemuxml2xmloutdata/{disk-scsi.xml => disk-scsi.x86_64-latest.xml} (92%) diff --git a/tests/qemuxml2xmloutdata/disk-scsi.xml b/tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml similarity index 92% rename from tests/qemuxml2xmloutdata/disk-scsi.xml rename to tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml index 062a907303..c5fd3c0657 100644 --- a/tests/qemuxml2xmloutdata/disk-scsi.xml +++ b/tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml @@ -8,6 +8,9 @@ <type arch='i686' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> @@ -46,20 +49,20 @@ <target dev='sdd' bus='scsi'/> <address type='drive' controller='3' bus='0' target='0' unit='0'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <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='scsi' index='0' model='lsilogic'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </controller> <controller type='scsi' index='1' model='lsisas1078'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <controller type='scsi' index='2' model='lsisas1068'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <controller type='scsi' index='3' model='ibmvscsi'> <address type='spapr-vio' reg='0x00002000'/> @@ -68,7 +71,7 @@ <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <memballoon model='virtio'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> </domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index e7480fcf9d..033f81013e 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -339,8 +339,7 @@ mymain(void) DO_TEST("disk-network-vxhs", NONE); DO_TEST("disk-network-tlsx509", NONE); DO_TEST("disk-nvme", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_QCOW2_LUKS); - DO_TEST("disk-scsi", QEMU_CAPS_SCSI_LSI, QEMU_CAPS_SCSI_MEGASAS, - QEMU_CAPS_SCSI_MPTSAS1068, QEMU_CAPS_SCSI_DISK_WWN); + DO_TEST_CAPS_LATEST("disk-scsi"); DO_TEST("disk-virtio-scsi-reservations", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_PR_MANAGER_HELPER); DO_TEST("controller-virtio-scsi", QEMU_CAPS_VIRTIO_SCSI); -- 2.25.1

Signed-off-by: Chris Jester-Young <cky@cky.nz> --- .../disk-scsi.x86_64-latest.args | 37 +++++++++++-------- tests/qemuxml2argvdata/disk-scsi.xml | 6 +++ .../disk-scsi.x86_64-latest.xml | 11 +++++- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/tests/qemuxml2argvdata/disk-scsi.x86_64-latest.args b/tests/qemuxml2argvdata/disk-scsi.x86_64-latest.args index 06c71cbab6..489f53d80e 100644 --- a/tests/qemuxml2argvdata/disk-scsi.x86_64-latest.args +++ b/tests/qemuxml2argvdata/disk-scsi.x86_64-latest.args @@ -32,37 +32,44 @@ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -device megasas,id=scsi1,bus=pci.0,addr=0x3 \ -device mptsas1068,id=scsi2,bus=pci.0,addr=0x4 \ -device spapr-vscsi,id=scsi3,reg=0x00002000 \ +-device pvscsi,id=scsi4,bus=pci.0,addr=0x5 \ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1",\ +"node-name":"libvirt-6-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-6-format","read-only":false,"driver":"raw",\ +"file":"libvirt-6-storage"}' \ +-device ide-hd,bus=ide.0,unit=0,drive=libvirt-6-format,id=ide0-0-0,bootindex=1 \ +-blockdev '{"driver":"file","filename":"/tmp/scsidisk.img",\ "node-name":"libvirt-5-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-5-format","read-only":false,"driver":"raw",\ "file":"libvirt-5-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-5-format,id=ide0-0-0,bootindex=1 \ --blockdev '{"driver":"file","filename":"/tmp/scsidisk.img",\ +-device scsi-hd,bus=scsi0.0,scsi-id=0,device_id=drive-scsi0-0-0,\ +drive=libvirt-5-format,id=scsi0-0-0 \ +-blockdev '{"driver":"file","filename":"/tmp/scsidisk2.img",\ "node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-4-format","read-only":false,"driver":"raw",\ "file":"libvirt-4-storage"}' \ --device scsi-hd,bus=scsi0.0,scsi-id=0,device_id=drive-scsi0-0-0,\ -drive=libvirt-4-format,id=scsi0-0-0 \ --blockdev '{"driver":"file","filename":"/tmp/scsidisk2.img",\ +-device scsi-hd,bus=scsi1.0,channel=0,scsi-id=0,lun=0,device_id=abcdefghijklmn,\ +drive=libvirt-4-format,id=scsi1-0-0-0,serial=abcdefghijklmn \ +-blockdev '{"driver":"file","filename":"/tmp/scsidisk3.img",\ "node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw",\ "file":"libvirt-3-storage"}' \ --device scsi-hd,bus=scsi1.0,channel=0,scsi-id=0,lun=0,device_id=abcdefghijklmn,\ -drive=libvirt-3-format,id=scsi1-0-0-0,serial=abcdefghijklmn \ --blockdev '{"driver":"file","filename":"/tmp/scsidisk3.img",\ -"node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw",\ -"file":"libvirt-2-storage"}' \ -device scsi-hd,bus=scsi2.0,channel=0,scsi-id=0,lun=0,\ -device_id=drive-scsi2-0-0-0,drive=libvirt-2-format,id=scsi2-0-0-0,\ +device_id=drive-scsi2-0-0-0,drive=libvirt-3-format,id=scsi2-0-0-0,\ wwn=0x5000c50015ea71ac \ -blockdev '{"driver":"file","filename":"/tmp/scsidisk4.img",\ +"node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw",\ +"file":"libvirt-2-storage"}' \ +-device scsi-hd,bus=scsi3.0,channel=0,scsi-id=0,lun=0,\ +device_id=drive-scsi3-0-0-0,drive=libvirt-2-format,id=scsi3-0-0-0 \ +-blockdev '{"driver":"file","filename":"/tmp/scsidisk5.img",\ "node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw",\ "file":"libvirt-1-storage"}' \ --device scsi-hd,bus=scsi3.0,channel=0,scsi-id=0,lun=0,\ -device_id=drive-scsi3-0-0-0,drive=libvirt-1-format,id=scsi3-0-0-0 \ --device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 \ +-device scsi-hd,bus=scsi4.0,channel=0,scsi-id=0,lun=0,\ +device_id=drive-scsi4-0-0-0,drive=libvirt-1-format,id=scsi4-0-0-0 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/disk-scsi.xml b/tests/qemuxml2argvdata/disk-scsi.xml index 7fbb785a37..4468a182db 100644 --- a/tests/qemuxml2argvdata/disk-scsi.xml +++ b/tests/qemuxml2argvdata/disk-scsi.xml @@ -41,12 +41,18 @@ <target dev='sdd' bus='scsi'/> <address type='drive' controller='3' bus='0' target='0' unit='0'/> </disk> + <disk type='file' device='disk'> + <source file='/tmp/scsidisk5.img'/> + <target dev='sde' bus='scsi'/> + <address type='drive' controller='4' bus='0' target='0' unit='0'/> + </disk> <controller type='usb' index='0'/> <controller type='ide' index='0'/> <controller type='scsi' index='0' model='lsilogic'/> <controller type='scsi' index='1' model='lsisas1078'/> <controller type='scsi' index='2' model='lsisas1068'/> <controller type='scsi' index='3' model='ibmvscsi'/> + <controller type='scsi' index='4' model='vmpvscsi'/> <controller type='pci' index='0' model='pci-root'/> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> diff --git a/tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml index c5fd3c0657..ff93277835 100644 --- a/tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/disk-scsi.x86_64-latest.xml @@ -49,6 +49,12 @@ <target dev='sdd' bus='scsi'/> <address type='drive' controller='3' bus='0' target='0' unit='0'/> </disk> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'/> + <source file='/tmp/scsidisk5.img'/> + <target dev='sde' bus='scsi'/> + <address type='drive' controller='4' bus='0' target='0' unit='0'/> + </disk> <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> @@ -67,11 +73,14 @@ <controller type='scsi' index='3' model='ibmvscsi'> <address type='spapr-vio' reg='0x00002000'/> </controller> + <controller type='scsi' index='4' model='vmpvscsi'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> + </controller> <controller type='pci' index='0' model='pci-root'/> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <memballoon model='virtio'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> </domain> -- 2.25.1

On Tue, May 12, 2020 at 21:55:44 -0400, Chris Jester-Young wrote:
QEMU has supported pvscsi, the VMware paravirtual SCSI controller, since 2013, but libvirt does not currently expose support for it. Adding such support is straightforward.
I have tested it with a Windows 10 guest, and the official VMware driver supports it with no issues. However, booting only works with SeaBIOS (tested) and the pre-release version of OVMF (not tested yet).
I've tested it with centos-8. Series: Reviewed-by: Peter Krempa <pkrempa@redhat.com> and pushed to master. Thanks for the patches!
participants (2)
-
Chris Jester-Young
-
Peter Krempa