diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 7be5d2000b..e08fefbc12 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -481,6 +481,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "qom-list-properties", "memory-backend-file.discard-data", "virtual-css-bridge", + "virtual-css-bridge.cssid-unrestricted", + "vfio-ccw", ); @@ -1110,6 +1112,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pcie-pci-bridge", QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE }, { "pr-manager-helper", QEMU_CAPS_PR_MANAGER_HELPER }, { "virtual-css-bridge", QEMU_CAPS_CCW }, + { "vfio-ccw", QEMU_CAPS_DEVICE_VFIO_CCW }, }; static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBalloon[] = { @@ -1251,6 +1254,10 @@ static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsIntelIOMMU[] = { { "device-iotlb", QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB }, }; +static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtualCSSBridge[] = { + { "cssid-unrestricted", QEMU_CAPS_CCW_CSSID_UNRESTRICTED }, +}; + /* see documentation for virQEMUQAPISchemaPathGet for the query format */ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { { "blockdev-add/arg-type/options/+gluster/debug-level", QEMU_CAPS_GLUSTER_DEBUG_LEVEL}, @@ -1376,6 +1383,9 @@ static virQEMUCapsObjectTypeProps virQEMUCapsDeviceProps[] = { { "virtio-gpu-ccw", virQEMUCapsDevicePropsVirtioGpu, ARRAY_CARDINALITY(virQEMUCapsDevicePropsVirtioGpu), QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, + { "virtual-css-bridge", virQEMUCapsObjectPropsVirtualCSSBridge, + ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtualCSSBridge), + QEMU_CAPS_CCW }, }; static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMemoryBackendFile[] = { @@ -3937,6 +3947,8 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CCW) && virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_CCW)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_CCW); + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CCW_CSSID_UNRESTRICTED)) + virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_VFIO_CCW); } ret = 0; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a810a27519..baff5cb118 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -465,6 +465,8 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-file,discard-data */ QEMU_CAPS_CCW, /* -device virtual-css-bridge */ + QEMU_CAPS_CCW_CSSID_UNRESTRICTED, /* virtual-css-bridge.cssid-unrestricted= */ + QEMU_CAPS_DEVICE_VFIO_CCW, /* -device vfio-ccw */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.replies index 534756f0b3..3e19ac67da 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.replies @@ -3402,6 +3402,16 @@ "id": "libvirt-33" } +{ + "return": [ + { + "name": "css_dev_path", + "type": "bool" + } + ], + "id": "libvirt-34" +} + { "return": [ { @@ -3447,7 +3457,7 @@ "cpu-max": 248 } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -3981,12 +3991,6 @@ "migration-safe": true } ], - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -3996,6 +4000,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -5098,7 +5108,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -5148,7 +5158,7 @@ "capability": "return-path" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -14871,7 +14881,7 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -14911,11 +14921,11 @@ } } }, - "id": "libvirt-41" + "id": "libvirt-42" } { - "id": "libvirt-42", + "id": "libvirt-43", "error": { "class": "GenericError", "desc": "Property '.migratable' not found" diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml index 24bd8e810b..cb7b35c0dc 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -117,7 +117,7 @@ 2010000 0 - 303326 + 303434 s390x diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies index 2de256009e..21fede318b 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies @@ -3521,6 +3521,16 @@ "id": "libvirt-34" } +{ + "return": [ + { + "name": "css_dev_path", + "type": "bool" + } + ], + "id": "libvirt-35" +} + { "return": [ { @@ -3571,7 +3581,7 @@ "cpu-max": 248 } ], - "id": "libvirt-35" + "id": "libvirt-36" } { @@ -4105,20 +4115,20 @@ "migration-safe": true } ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ ], - "id": "libvirt-37" + "id": "libvirt-38" } { "return": [ "emulator" ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -5239,7 +5249,7 @@ "option": "drive" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -5297,7 +5307,7 @@ "capability": "x-multifd" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -15165,7 +15175,7 @@ "meta-type": "object" } ], - "id": "libvirt-41" + "id": "libvirt-42" } { @@ -15204,11 +15214,11 @@ } } }, - "id": "libvirt-42" + "id": "libvirt-43" } { - "id": "libvirt-43", + "id": "libvirt-44", "error": { "class": "GenericError", "desc": "Property '.migratable' not found" diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml index 530f6dc7b4..497adb8efd 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -123,7 +123,7 @@ 2011000 0 - 342058 + 342166 s390x diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies index 726a5fb2c8..a93e5984c6 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies @@ -3614,6 +3614,21 @@ "id": "libvirt-34" } +{ + "return": [ + { + "name": "cssid-unrestricted", + "description": "A css device can use any cssid, regardless whether virtual or not (read only, always true)", + "type": "bool" + }, + { + "name": "css_dev_path", + "type": "bool" + } + ], + "id": "libvirt-35" +} + { "return": [ { @@ -3665,7 +3680,7 @@ "type": "string" } ], - "id": "libvirt-35" + "id": "libvirt-36" } { @@ -3723,7 +3738,7 @@ "alias": "s390-ccw-virtio" } ], - "id": "libvirt-36" + "id": "libvirt-37" } { @@ -6378,20 +6393,20 @@ "migration-safe": true } ], - "id": "libvirt-37" + "id": "libvirt-38" } { "return": [ ], - "id": "libvirt-38" + "id": "libvirt-39" } { "return": [ "emulator" ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -7547,7 +7562,7 @@ "option": "drive" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -7609,7 +7624,7 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-41" + "id": "libvirt-42" } { @@ -18977,11 +18992,11 @@ "meta-type": "object" } ], - "id": "libvirt-42" + "id": "libvirt-43" } { - "id": "libvirt-43", + "id": "libvirt-44", "error": { "class": "GenericError", "desc": "The CPU definition 'max' is unknown." diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml index 76740673da..607274ebb7 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -124,6 +124,8 @@ + + 2011090 0 0 diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.replies index 61fbd9a667..fe2aecd2b6 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.replies @@ -2547,6 +2547,16 @@ "id": "libvirt-33" } +{ + "return": [ + { + "name": "css_dev_path", + "type": "bool" + } + ], + "id": "libvirt-34" +} + { "return": [ { @@ -2577,7 +2587,7 @@ "cpu-max": 248 } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2586,12 +2596,6 @@ "name": "host" } ], - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -2601,6 +2605,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -3534,7 +3544,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -3568,7 +3578,7 @@ "capability": "postcopy-ram" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -11924,7 +11934,7 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml index 10ce4268b3..3c5601cc36 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml @@ -107,7 +107,7 @@ 2007000 0 - 216732 + 216840 s390x diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.replies index 818118caf2..34734ec19b 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.replies @@ -2820,6 +2820,16 @@ "id": "libvirt-33" } +{ + "return": [ + { + "name": "css_dev_path", + "type": "bool" + } + ], + "id": "libvirt-34" +} + { "return": [ { @@ -2855,7 +2865,7 @@ "alias": "s390-ccw-virtio" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -3181,12 +3191,6 @@ "migration-safe": true } ], - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -3196,6 +3200,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -4154,7 +4164,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -4192,7 +4202,7 @@ "capability": "x-colo" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -12962,7 +12972,7 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -12988,11 +12998,11 @@ } } }, - "id": "libvirt-41" + "id": "libvirt-42" } { - "id": "libvirt-42", + "id": "libvirt-43", "error": { "class": "GenericError", "desc": "Property '.migratable' not found" diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml index 800fcc5044..55c2c5bc1a 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml @@ -109,7 +109,7 @@ 2007093 0 - 241633 + 241741 s390x diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.replies index cbacec6d02..967148a022 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.replies @@ -3101,6 +3101,16 @@ "id": "libvirt-33" } +{ + "return": [ + { + "name": "css_dev_path", + "type": "bool" + } + ], + "id": "libvirt-34" +} + { "return": [ { @@ -3141,7 +3151,7 @@ "cpu-max": 248 } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -3531,12 +3541,6 @@ "migration-safe": true } ], - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -3546,6 +3550,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -4618,7 +4628,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -4660,7 +4670,7 @@ "capability": "release-ram" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -13946,7 +13956,7 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -13973,11 +13983,11 @@ } } }, - "id": "libvirt-41" + "id": "libvirt-42" } { - "id": "libvirt-42", + "id": "libvirt-43", "error": { "class": "GenericError", "desc": "Property '.migratable' not found" diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml index f8aee8379c..497e02d3bf 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml @@ -112,7 +112,7 @@ 2009000 0 - 265051 + 265159 s390x