From a6441402a573ad26ce28e773d4aebf8e0ec1a58b Mon Sep 17 00:00:00 2001 From: Farhan Ali Date: Fri, 23 Mar 2018 13:22:38 -0400 Subject: [PATCH] qemu: Introduce a new capability for virtio-gpu-ccw QEMU on S390 (since v2.11) can support virtio-gpu-ccw device. Let's introduce a new qemu capability for the device. Signed-off-by: Farhan Ali Signed-off-by: Boris Fiuczynski --- src/qemu/qemu_capabilities.c | 5 ++ src/qemu/qemu_capabilities.h | 1 + .../caps_2.11.0.s390x.replies | 83 +++++++++++++++++-- .../caps_2.11.0.s390x.xml | 3 +- .../caps_2.12.0.s390x.replies | 81 ++++++++++++++++-- .../caps_2.12.0.s390x.xml | 1 + .../qemuxml2argvdata/video-virtio-gpu-ccw.xml | 35 ++++++++ .../video-virtio-gpu-ccw.xml | 39 +++++++++ tests/qemuxml2xmltest.c | 7 ++ 9 files changed, 237 insertions(+), 18 deletions(-) create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml create mode 100644 tests/qemuxml2xmloutdata/video-virtio-gpu-ccw.xml diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index d5a5a3be62..aaa04cbf0c 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -460,6 +460,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "pl011", "machine.pseries.max-cpu-compat", "dump-completed", + "virtio-gpu-ccw", ); @@ -1695,6 +1696,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "sclplmconsole", QEMU_CAPS_DEVICE_SCLPLMCONSOLE }, { "isa-serial", QEMU_CAPS_DEVICE_ISA_SERIAL }, { "pl011", QEMU_CAPS_DEVICE_PL011 }, + { "virtio-gpu-ccw", QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, }; static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBalloon[] = { @@ -1948,6 +1950,9 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { { "spapr-pci-host-bridge", virQEMUCapsObjectPropsSpaprPCIHostBridge, ARRAY_CARDINALITY(virQEMUCapsObjectPropsSpaprPCIHostBridge), QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE }, + { "virtio-gpu-ccw", virQEMUCapsObjectPropsVirtioGpu, + ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu), + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, }; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c2ec2be193..b4852e5e5f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -444,6 +444,7 @@ typedef enum { QEMU_CAPS_DEVICE_PL011, /* -device pl011 (not user-instantiable) */ QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT, /* -machine pseries,max-cpu-compat= */ QEMU_CAPS_DUMP_COMPLETED, /* DUMP_COMPLETED event */ + QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW, /* -device virtio-gpu-ccw */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies index 860904b1e0..2de256009e 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies @@ -3456,6 +3456,71 @@ "id": "libvirt-33" } +{ + "return": [ + { + "name": "notify_on_empty", + "description": "on/off", + "type": "bool" + }, + { + "name": "ioeventfd", + "description": "on/off", + "type": "bool" + }, + { + "name": "any_layout", + "description": "on/off", + "type": "bool" + }, + { + "name": "devno", + "description": "Identifier of an I/O device in the channel subsystem, example: fe.1.23ab", + "type": "str" + }, + { + "name": "indirect_desc", + "description": "on/off", + "type": "bool" + }, + { + "name": "event_idx", + "description": "on/off", + "type": "bool" + }, + { + "name": "virtio-backend", + "type": "child" + }, + { + "name": "yres", + "type": "uint32" + }, + { + "name": "xres", + "type": "uint32" + }, + { + "name": "iommu_platform", + "description": "on/off", + "type": "bool" + }, + { + "name": "max_outputs", + "type": "uint32" + }, + { + "name": "max_hostmem", + "type": "size" + }, + { + "name": "max_revision", + "type": "uint32" + } + ], + "id": "libvirt-34" +} + { "return": [ { @@ -3506,7 +3571,7 @@ "cpu-max": 248 } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -4040,20 +4105,20 @@ "migration-safe": true } ], - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "emulator" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -5174,7 +5239,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -5232,7 +5297,7 @@ "capability": "x-multifd" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -15100,7 +15165,7 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -15139,11 +15204,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.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml index 17abac9102..46ae5e2309 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -146,9 +146,10 @@ + 2011000 0 - 340897 + 342058 s390x diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies index f2699d49ef..c4e44c6d0f 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies @@ -3549,6 +3549,71 @@ "id": "libvirt-33" } +{ + "return": [ + { + "name": "notify_on_empty", + "description": "on/off", + "type": "bool" + }, + { + "name": "ioeventfd", + "description": "on/off", + "type": "bool" + }, + { + "name": "any_layout", + "description": "on/off", + "type": "bool" + }, + { + "name": "devno", + "description": "Identifier of an I/O device in the channel subsystem, example: fe.1.23ab", + "type": "str" + }, + { + "name": "indirect_desc", + "description": "on/off", + "type": "bool" + }, + { + "name": "event_idx", + "description": "on/off", + "type": "bool" + }, + { + "name": "virtio-backend", + "type": "child" + }, + { + "name": "yres", + "type": "uint32" + }, + { + "name": "xres", + "type": "uint32" + }, + { + "name": "iommu_platform", + "description": "on/off", + "type": "bool" + }, + { + "name": "max_outputs", + "type": "uint32" + }, + { + "name": "max_hostmem", + "type": "size" + }, + { + "name": "max_revision", + "type": "uint32" + } + ], + "id": "libvirt-34" +} + { "return": [ { @@ -3604,7 +3669,7 @@ "alias": "s390-ccw-virtio" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -6259,20 +6324,20 @@ "migration-safe": true } ], - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "emulator" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -7428,7 +7493,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -7490,7 +7555,7 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -18858,11 +18923,11 @@ "meta-type": "object" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { - "id": "libvirt-41", + "id": "libvirt-42", "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 355ccc1852..d6d8885f77 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -146,6 +146,7 @@ + 2011090 0 0 diff --git a/tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml b/tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml new file mode 100644 index 0000000000..b3275955de --- /dev/null +++ b/tests/qemuxml2argvdata/video-virtio-gpu-ccw.xml @@ -0,0 +1,35 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1803 + 219136 + 219136 + 1 + + hvm + + + destroy + restart + destroy + + /usr/bin/qemu-system-s390x + + + +
+ + +
+ + +