[PATCH v3 24/29] qemu: introduce QEMU_CAPS_DEVICE_PNV_PHB4

Daniel Henrique Barboza danielhb413 at gmail.com
Wed Feb 23 13:19:47 UTC 2022


This capability enables two devices:

- pnv-phb4 device, the pcie-root controller for PowerNV9 domains
- pnv-phb4-root-port, the pcie-root-port model that is used with the
pnv-phb4 device.

As with the pnv-phb3 devices, these are also user creatable only after
QEMU 6.2.0 but the capability is available since 5.0.0, meaning that we
need to check QEMU version and arch manually before setting it.

Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
---
 src/qemu/qemu_capabilities.c                    | 6 +++++-
 src/qemu/qemu_capabilities.h                    | 1 +
 tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 +
 tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 +
 tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 +
 tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 +
 6 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index dbd9065a99..12f296347d 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -668,6 +668,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
 
               /* 425 */
               "pnv-phb3", /* QEMU_CAPS_DEVICE_PNV_PHB3 */
+              "pnv-phb4", /* QEMU_CAPS_DEVICE_PNV_PHB4 */
     );
 
 
@@ -1405,6 +1406,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
     { "s390-pv-guest", QEMU_CAPS_S390_PV_GUEST },
     { "virtio-mem-pci", QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI },
     { "pnv-phb3", QEMU_CAPS_DEVICE_PNV_PHB3 },
+    { "pnv-phb4", QEMU_CAPS_DEVICE_PNV_PHB4 },
 };
 
 
@@ -5252,8 +5254,10 @@ virQEMUCapsInitQMPVersionCaps(virQEMUCaps *qemuCaps)
      * QEMU 6.2.0. The version value set here was taken from a
      * binary post 6.2.0 release that has user creatable pnv-phb
      * support. */
-    if (qemuCaps->version <= 6002000 && ARCH_IS_PPC64(qemuCaps->arch))
+    if (qemuCaps->version <= 6002000 && ARCH_IS_PPC64(qemuCaps->arch)) {
         virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_PNV_PHB3);
+        virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_PNV_PHB4);
+    }
 }
 
 
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 47845fbc59..f0d6ba2018 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -643,6 +643,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
 
     /* 425 */
     QEMU_CAPS_DEVICE_PNV_PHB3, /* devices pnv-phb3 and pnv-phb3-root-port */
+    QEMU_CAPS_DEVICE_PNV_PHB4, /* devices pnv-phb4 and pnv-phb4-root-port */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
index adaa13f6e1..913c28e11b 100644
--- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
@@ -187,6 +187,7 @@
   <flag name='query-display-options'/>
   <flag name='virtio-blk.queue-size'/>
   <flag name='pnv-phb3'/>
+  <flag name='pnv-phb4'/>
   <version>5000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900241</microcodeVersion>
diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml
index 4c3526f499..7a635a4743 100644
--- a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml
@@ -191,6 +191,7 @@
   <flag name='query-dirty-rate'/>
   <flag name='calc-dirty-rate'/>
   <flag name='pnv-phb3'/>
+  <flag name='pnv-phb4'/>
   <version>5002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900243</microcodeVersion>
diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml
index 7dfe86ba30..6a5675105e 100644
--- a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml
@@ -202,6 +202,7 @@
   <flag name='calc-dirty-rate'/>
   <flag name='dirtyrate-param.mode'/>
   <flag name='pnv-phb3'/>
+  <flag name='pnv-phb4'/>
   <version>6002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900244</microcodeVersion>
diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml
index 57c5ead7a4..9770707bca 100644
--- a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml
@@ -203,6 +203,7 @@
   <flag name='calc-dirty-rate'/>
   <flag name='dirtyrate-param.mode'/>
   <flag name='pnv-phb3'/>
+  <flag name='pnv-phb4'/>
   <version>6002050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900243</microcodeVersion>
-- 
2.35.1




More information about the libvir-list mailing list