[libvirt PATCH] qemu: Support vmpvscsi controller model

Chris Jester-Young posted 1 patch 3 years, 11 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20200508230221.338318-1-cky@cky.nz
src/qemu/qemu_capabilities.c                       | 2 ++
src/qemu/qemu_capabilities.h                       | 1 +
src/qemu/qemu_command.c                            | 4 +++-
src/qemu/qemu_validate.c                           | 9 ++++++++-
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 +
42 files changed, 52 insertions(+), 2 deletions(-)
[libvirt PATCH] qemu: Support vmpvscsi controller model
Posted by Chris Jester-Young 3 years, 11 months ago
Signed-off-by: Chris Jester-Young <cky@cky.nz>
---
 src/qemu/qemu_capabilities.c                       | 2 ++
 src/qemu/qemu_capabilities.h                       | 1 +
 src/qemu/qemu_command.c                            | 4 +++-
 src/qemu/qemu_validate.c                           | 9 ++++++++-
 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 +
 42 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 2c6e36685e..e3f5121174 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -580,6 +580,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
               "machine.pseries.cap-sbbc",
               "machine.pseries.cap-ibs",
               "tcg",
+              "pvscsi",
     );
 
 
@@ -1301,6 +1302,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 },
 };
 
 static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBalloon[] = {
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index cdeaf09cce..96a719c0f8 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -561,6 +561,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     QEMU_CAPS_MACHINE_PSERIES_CAP_SBBC, /* -machine pseries.cap-sbbc */
     QEMU_CAPS_MACHINE_PSERIES_CAP_IBS, /* -machine pseries.cap-ibs */
     QEMU_CAPS_TCG, /* QEMU does support TCG */
+    QEMU_CAPS_SCSI_PVSCSI, /* -device pvscsi */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 269bdbaf56..9f60727b78 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -2911,9 +2911,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 9debac6b30..3d9fc237b3 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -2050,9 +2050,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));
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 1f743aaa11..cadd64ac18 100644
--- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml
@@ -191,6 +191,7 @@
   <flag name='virtio.packed'/>
   <flag name='pcie-root-port.hotplug'/>
   <flag name='tcg'/>
+  <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 a5f0bb538b..4dea15a466 100644
--- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
@@ -199,6 +199,7 @@
   <flag name='machine.pseries.cap-sbbc'/>
   <flag name='machine.pseries.cap-ibs'/>
   <flag name='tcg'/>
+  <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 e9651ca581..e8087143de 100644
--- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml
@@ -187,6 +187,7 @@
   <flag name='pcie-root-port.hotplug'/>
   <flag name='aio.io_uring'/>
   <flag name='tcg'/>
+  <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 f127f38bcc..0a069643b2 100644
--- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml
@@ -232,6 +232,7 @@
   <flag name='pcie-root-port.hotplug'/>
   <flag name='aio.io_uring'/>
   <flag name='tcg'/>
+  <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 9611549bd7..e055251e70 100644
--- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml
@@ -232,6 +232,7 @@
   <flag name='pcie-root-port.hotplug'/>
   <flag name='aio.io_uring'/>
   <flag name='tcg'/>
+  <flag name='pvscsi'/>
   <version>5000050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100242</microcodeVersion>
-- 
2.25.1


Re: [libvirt PATCH] qemu: Support vmpvscsi controller model
Posted by Peter Krempa 3 years, 11 months ago
On Fri, May 08, 2020 at 19:02:21 -0400, Chris Jester-Young wrote:

It would be great if you could describe that 'pvscsi' indeed is the
vmware paravirtual scsi controller even in qemu, because I had to dig
through the code to figure it out.

> Signed-off-by: Chris Jester-Young <cky@cky.nz>
> ---
>  src/qemu/qemu_capabilities.c                       | 2 ++
>  src/qemu/qemu_capabilities.h                       | 1 +
>  src/qemu/qemu_command.c                            | 4 +++-
>  src/qemu/qemu_validate.c                           | 9 ++++++++-
>  tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml   | 1 +

Can the 'pvscsi' device be compiled out using any upstream way? If not
we don't really need a capability for it since qemu-1.5.3 is the oldest
supported qemu and all other versions support it as well.

[...]

The remainder of the patch looks okay to me, but it's missing a
qemuxml2argvtest case for the new controller. It looks like the
controller is using PCI addressing so the rest should be okay.

If you figure out that the capability is required, I'd prefer if the
addition of the capability is in a separate patch.

Re: [libvirt PATCH] qemu: Support vmpvscsi controller model
Posted by Daniel P. Berrangé 3 years, 11 months ago
On Mon, May 11, 2020 at 09:13:42AM +0200, Peter Krempa wrote:
> On Fri, May 08, 2020 at 19:02:21 -0400, Chris Jester-Young wrote:
> 
> It would be great if you could describe that 'pvscsi' indeed is the
> vmware paravirtual scsi controller even in qemu, because I had to dig
> through the code to figure it out.
> 
> > Signed-off-by: Chris Jester-Young <cky@cky.nz>
> > ---
> >  src/qemu/qemu_capabilities.c                       | 2 ++
> >  src/qemu/qemu_capabilities.h                       | 1 +
> >  src/qemu/qemu_command.c                            | 4 +++-
> >  src/qemu/qemu_validate.c                           | 9 ++++++++-
> >  tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml   | 1 +
> 
> Can the 'pvscsi' device be compiled out using any upstream way? If not
> we don't really need a capability for it since qemu-1.5.3 is the oldest
> supported qemu and all other versions support it as well.

Every device that isn't hardwired a machine board in QEMU can be compiled
out, using the KConfig framework.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH] qemu: Support vmpvscsi controller model
Posted by Chris Jester-Young 3 years, 11 months ago
On Mon, May 11, 2020 at 09:13:42AM +0200, Peter Krempa wrote:
> It would be great if you could describe that 'pvscsi' indeed is the
> vmware paravirtual scsi controller even in qemu, because I had to dig
> through the code to figure it out.

Sure, just in the commit message? Or elsewhere too?

> Can the 'pvscsi' device be compiled out using any upstream way? If not
> we don't really need a capability for it since qemu-1.5.3 is the oldest
> supported qemu and all other versions support it as well.

As Daniel P. Berrangé mentioned, this can be configured out via Kconfig.
Plus there are actually some files in tests/qemucapabilitiesdata that do
not advertise that device (e.g., *.s390x.replies).

> The remainder of the patch looks okay to me, but it's missing a
> qemuxml2argvtest case for the new controller. It looks like the
> controller is using PCI addressing so the rest should be okay.

Sure thing, I'll be happy to add a test. Do I just take one of the
existing tests and modify the XML and expected resultant command?

> If you figure out that the capability is required, I'd prefer if the
> addition of the capability is in a separate patch.

Can do. Given the (hopefully, given the patches from earlier today)
impending arrival of merge requests, and the fact that I already have
to redo the patch (since new capabilities have since been added), my
current plan is to just post the new commits in a merge request.

(Don't worry, I won't actually file the MR until the CI system is in
place.)

Cheers,
Chris.


Re: [libvirt PATCH] qemu: Support vmpvscsi controller model
Posted by Peter Krempa 3 years, 11 months ago
On Tue, May 12, 2020 at 10:26:46 -0400, Chris Jester-Young wrote:
> On Mon, May 11, 2020 at 09:13:42AM +0200, Peter Krempa wrote:
> > It would be great if you could describe that 'pvscsi' indeed is the
> > vmware paravirtual scsi controller even in qemu, because I had to dig
> > through the code to figure it out.
> 
> Sure, just in the commit message? Or elsewhere too?

Commit message is probably enough.

> > Can the 'pvscsi' device be compiled out using any upstream way? If not
> > we don't really need a capability for it since qemu-1.5.3 is the oldest
> > supported qemu and all other versions support it as well.
> 
> As Daniel P. Berrangé mentioned, this can be configured out via Kconfig.
> Plus there are actually some files in tests/qemucapabilitiesdata that do
> not advertise that device (e.g., *.s390x.replies).

Yes, thus we need the capability. I'd slightly prefer if the capability
is added in a separate commit but that's not strictly required.

> 
> > The remainder of the patch looks okay to me, but it's missing a
> > qemuxml2argvtest case for the new controller. It looks like the
> > controller is using PCI addressing so the rest should be okay.
> 
> Sure thing, I'll be happy to add a test. Do I just take one of the
> existing tests and modify the XML and expected resultant command?

Both are actually fine. If there is an appropriate file where the data
would fit, just adding it to an existing test case is appropriate.

Otherwise you can copy a minimal test case and add the controller.

We prefer if new tests use DO_TEST_CAPS_LATEST, or the version-locked
variants of the test macro so that we are testing a "real" situation. It
also simplifies addition of the test.

Note that you can use VIR_TEST_REGENERATE_OUTPUT=1 env variable when
running the qemuxml2argvtest to force creation of the output file and
then just verify that it's as expected.

> > If you figure out that the capability is required, I'd prefer if the
> > addition of the capability is in a separate patch.
> 
> Can do. Given the (hopefully, given the patches from earlier today)
> impending arrival of merge requests, and the fact that I already have
> to redo the patch (since new capabilities have since been added), my
> current plan is to just post the new commits in a merge request.
> 
> (Don't worry, I won't actually file the MR until the CI system is in
> place.)

Well, CI is already there, but the main libvirt project still works on
the mail based workflow

Re: [libvirt PATCH] qemu: Support vmpvscsi controller model
Posted by Chris Jester-Young 3 years, 11 months ago
On Tue, May 12, 2020 at 04:51:20PM +0200, Peter Krempa wrote:
> On Tue, May 12, 2020 at 10:26:46 -0400, Chris Jester-Young wrote:
> > As Daniel P. Berrangé mentioned, this can be configured out via Kconfig.
> > Plus there are actually some files in tests/qemucapabilitiesdata that do
> > not advertise that device (e.g., *.s390x.replies).
> 
> Yes, thus we need the capability. I'd slightly prefer if the capability
> is added in a separate commit but that's not strictly required.

Yep, it'll be the first commit in the series that I'll post shortly.
Currently just finishing up `make syntax-check`.

> We prefer if new tests use DO_TEST_CAPS_LATEST, or the version-locked
> variants of the test macro so that we are testing a "real" situation. It
> also simplifies addition of the test.

Thank you, that's a very helpful tip! I ended up editing disk-scsi.xml,
which is already DO_TEST_CAPS_LATEST for qemuxml2argvtest but not for
qemuxml2xmltest, so you'll see a commit for the latter too. I found
commit 4150f944f9f3f68077aa91e91af259755d4dc568 very helpful for seeing
how one goes about such a conversion.

> Note that you can use VIR_TEST_REGENERATE_OUTPUT=1 env variable when
> running the qemuxml2argvtest to force creation of the output file and
> then just verify that it's as expected.

Thanks, that's very helpful too, knowing I don't have to manually add
`<flag name='pvscsi'/>` by hand!

Too bad, in the case of the qemuxml2argvtest data changes, the block
device node names are numbered backwards compared to the controller
bus IDs, which made the diff larger than it had to be. (I manually
renamed the node names before and after the change to verify that the
actual diff, minus the node name differences, makes sense.)

> Well, CI is already there, but the main libvirt project still works on
> the mail based workflow

Okay, then I'll email out the next patch series right after I send this
message, and not wait around.

Thanks so much for your help!
Chris.