Add async unplug coverage for the setvcpus count-based path. The test downscales an x86 domain by multiple hotpluggable vCPU entities, verifying the pending XML before completion, the final XML after DEVICE_DELETED processing, and one vcpu-removed event for each removed vCPU.
Signed-off-by: Akash Kulhalli <[email protected]> --- tests/qemuhotplugtest.c | 20 +++ ...x86-modern-bulk-downscale-async-domain.xml | 42 +++++ ...6-modern-bulk-downscale-async-monitor.json | 159 ++++++++++++++++++ ...odern-bulk-downscale-async-result-conf.xml | 42 +++++ ...odern-bulk-downscale-async-result-live.xml | 50 ++++++ ...lk-downscale-async-result-pending-live.xml | 50 ++++++ 6 files changed, 363 insertions(+) create mode 100644 tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-domain.xml create mode 100644 tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-monitor.json create mode 100644 tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-conf.xml create mode 100644 tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-live.xml create mode 100644 tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-pending-live.xml diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c index 402f58cbfc19..60940a5df750 100644 --- a/tests/qemuhotplugtest.c +++ b/tests/qemuhotplugtest.c @@ -1180,6 +1180,26 @@ mymain(void) DO_TEST_CPU_INDIVIDUAL_ASYNC("ppc64", "ppc64-modern-individual-del-async", "16-23", "vcpu16", "16-23"); + do { + const char *aliases[] = { "vcpu7", "vcpu6", "vcpu5", "vcpu4" }; + const struct testQemuHotplugCpuAsyncParams async = { + .test = "x86-modern-bulk-downscale-async", + .newcpus = 4, + .conn = conn, + .deviceDeletedAliases = aliases, + .ndeviceDeletedAliases = G_N_ELEMENTS(aliases), + .removedVcpus = "4-7", + .arch = "x86_64", + .capsLatestFiles = capsLatestFiles, + .capsCache = capsCache, + .schemaCache = schemaCache, + }; + + if (virTestRun("hotplug vcpus group async x86-modern-bulk-downscale-async", + testQemuHotplugCpuGroupAsync, &async) < 0) + ret = -1; + } while (0); + qemuTestDriverFree(&driver); virObjectUnref(data.vm); return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-domain.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-domain.xml new file mode 100644 index 000000000000..513735211b7f --- /dev/null +++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-domain.xml @@ -0,0 +1,42 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static' current='8'>8</vcpu> + <vcpus> + <vcpu id='0' enabled='yes' hotpluggable='no'/> + <vcpu id='1' enabled='yes' hotpluggable='no'/> + <vcpu id='2' enabled='yes' hotpluggable='no'/> + <vcpu id='3' enabled='yes' hotpluggable='no'/> + <vcpu id='4' enabled='yes' hotpluggable='yes'/> + <vcpu id='5' enabled='yes' hotpluggable='yes'/> + <vcpu id='6' enabled='yes' hotpluggable='yes'/> + <vcpu id='7' enabled='yes' hotpluggable='yes'/> + </vcpus> + <os> + <type arch='x86_64' machine='pc'>hvm</type> + <boot dev='network'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + <topology sockets='4' dies='1' clusters='1' cores='2' threads='1'/> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-monitor.json b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-monitor.json new file mode 100644 index 000000000000..fafe41a9893f --- /dev/null +++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-monitor.json @@ -0,0 +1,159 @@ +{"execute":"query-hotpluggable-cpus","id":"libvirt-1"} + +{ + "return": [ + {"props":{"socket-id":0,"core-id":0,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[0]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":0,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[2]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[3]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[4]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/peripheral/vcpu4","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/peripheral/vcpu5","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/peripheral/vcpu6","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/peripheral/vcpu7","type":"qemu64-x86_64-cpu"} + ], + "id": "libvirt-1" +} + +{"execute":"query-cpus-fast","id":"libvirt-2"} + +{ + "return": [ + {"target":"x86","current":true,"cpu-index":0,"qom-path":"/machine/unattached/device[0]","pc":-2130415978,"halted":true,"thread-id":518291}, + {"target":"x86","current":false,"cpu-index":1,"qom-path":"/machine/unattached/device[2]","pc":-2130415978,"halted":true,"thread-id":518292}, + {"target":"x86","current":false,"cpu-index":2,"qom-path":"/machine/unattached/device[3]","pc":-2130415978,"halted":true,"thread-id":518294}, + {"target":"x86","current":false,"cpu-index":3,"qom-path":"/machine/unattached/device[4]","pc":-2130415978,"halted":true,"thread-id":518295}, + {"target":"x86","current":false,"cpu-index":4,"qom-path":"/machine/peripheral/vcpu4","pc":-2130415978,"halted":true,"thread-id":518296}, + {"target":"x86","current":false,"cpu-index":5,"qom-path":"/machine/peripheral/vcpu5","pc":-2130415978,"halted":true,"thread-id":518297}, + {"target":"x86","current":false,"cpu-index":6,"qom-path":"/machine/peripheral/vcpu6","pc":-2130415978,"halted":true,"thread-id":518298}, + {"target":"x86","current":false,"cpu-index":7,"qom-path":"/machine/peripheral/vcpu7","pc":-2130415978,"halted":true,"thread-id":518299} + ], + "id": "libvirt-2" +} + +{"execute":"device_del","arguments":{"id":"vcpu7"},"id":"libvirt-3"} + +{"return": {}} + +{"execute":"device_del","arguments":{"id":"vcpu6"},"id":"libvirt-4"} + +{"return": {}} + +{"execute":"device_del","arguments":{"id":"vcpu5"},"id":"libvirt-5"} + +{"return": {}} + +{"execute":"device_del","arguments":{"id":"vcpu4"},"id":"libvirt-6"} + +{"return": {}} + +{"execute":"query-hotpluggable-cpus","id":"libvirt-7"} + +{ + "return": [ + {"props":{"socket-id":0,"core-id":0,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[0]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":0,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[2]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[3]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[4]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"} + ], + "id": "libvirt-7" +} + +{"execute":"query-cpus-fast","id":"libvirt-8"} + +{ + "return": [ + {"target":"x86","current":true,"cpu-index":0,"qom-path":"/machine/unattached/device[0]","pc":-2130415978,"halted":true,"thread-id":518291}, + {"target":"x86","current":false,"cpu-index":1,"qom-path":"/machine/unattached/device[2]","pc":-2130415978,"halted":true,"thread-id":518292}, + {"target":"x86","current":false,"cpu-index":2,"qom-path":"/machine/unattached/device[3]","pc":-2130415978,"halted":true,"thread-id":518294}, + {"target":"x86","current":false,"cpu-index":3,"qom-path":"/machine/unattached/device[4]","pc":-2130415978,"halted":true,"thread-id":518295} + ], + "id": "libvirt-8" +} + +{"execute":"query-hotpluggable-cpus","id":"libvirt-9"} + +{ + "return": [ + {"props":{"socket-id":0,"core-id":0,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[0]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":0,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[2]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[3]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[4]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"} + ], + "id": "libvirt-9" +} + +{"execute":"query-cpus-fast","id":"libvirt-10"} + +{ + "return": [ + {"target":"x86","current":true,"cpu-index":0,"qom-path":"/machine/unattached/device[0]","pc":-2130415978,"halted":true,"thread-id":518291}, + {"target":"x86","current":false,"cpu-index":1,"qom-path":"/machine/unattached/device[2]","pc":-2130415978,"halted":true,"thread-id":518292}, + {"target":"x86","current":false,"cpu-index":2,"qom-path":"/machine/unattached/device[3]","pc":-2130415978,"halted":true,"thread-id":518294}, + {"target":"x86","current":false,"cpu-index":3,"qom-path":"/machine/unattached/device[4]","pc":-2130415978,"halted":true,"thread-id":518295} + ], + "id": "libvirt-10" +} + +{"execute":"query-hotpluggable-cpus","id":"libvirt-11"} + +{ + "return": [ + {"props":{"socket-id":0,"core-id":0,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[0]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":0,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[2]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[3]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[4]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"} + ], + "id": "libvirt-11" +} + +{"execute":"query-cpus-fast","id":"libvirt-12"} + +{ + "return": [ + {"target":"x86","current":true,"cpu-index":0,"qom-path":"/machine/unattached/device[0]","pc":-2130415978,"halted":true,"thread-id":518291}, + {"target":"x86","current":false,"cpu-index":1,"qom-path":"/machine/unattached/device[2]","pc":-2130415978,"halted":true,"thread-id":518292}, + {"target":"x86","current":false,"cpu-index":2,"qom-path":"/machine/unattached/device[3]","pc":-2130415978,"halted":true,"thread-id":518294}, + {"target":"x86","current":false,"cpu-index":3,"qom-path":"/machine/unattached/device[4]","pc":-2130415978,"halted":true,"thread-id":518295} + ], + "id": "libvirt-12" +} + +{"execute":"query-hotpluggable-cpus","id":"libvirt-13"} + +{ + "return": [ + {"props":{"socket-id":0,"core-id":0,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[0]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":0,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[2]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":0},"vcpus-count":1,"qom-path":"/machine/unattached/device[3]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":0,"core-id":1,"thread-id":1},"vcpus-count":1,"qom-path":"/machine/unattached/device[4]","type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":0,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":0},"vcpus-count":1,"type":"qemu64-x86_64-cpu"}, + {"props":{"socket-id":1,"core-id":1,"thread-id":1},"vcpus-count":1,"type":"qemu64-x86_64-cpu"} + ], + "id": "libvirt-13" +} + +{"execute":"query-cpus-fast","id":"libvirt-14"} + +{ + "return": [ + {"target":"x86","current":true,"cpu-index":0,"qom-path":"/machine/unattached/device[0]","pc":-2130415978,"halted":true,"thread-id":518291}, + {"target":"x86","current":false,"cpu-index":1,"qom-path":"/machine/unattached/device[2]","pc":-2130415978,"halted":true,"thread-id":518292}, + {"target":"x86","current":false,"cpu-index":2,"qom-path":"/machine/unattached/device[3]","pc":-2130415978,"halted":true,"thread-id":518294}, + {"target":"x86","current":false,"cpu-index":3,"qom-path":"/machine/unattached/device[4]","pc":-2130415978,"halted":true,"thread-id":518295} + ], + "id": "libvirt-14" +} diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-conf.xml new file mode 100644 index 000000000000..c35bc678f56f --- /dev/null +++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-conf.xml @@ -0,0 +1,42 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static' current='4'>8</vcpu> + <vcpus> + <vcpu id='0' enabled='yes' hotpluggable='no'/> + <vcpu id='1' enabled='yes' hotpluggable='no'/> + <vcpu id='2' enabled='yes' hotpluggable='no'/> + <vcpu id='3' enabled='yes' hotpluggable='no'/> + <vcpu id='4' enabled='no' hotpluggable='yes'/> + <vcpu id='5' enabled='no' hotpluggable='yes'/> + <vcpu id='6' enabled='no' hotpluggable='yes'/> + <vcpu id='7' enabled='no' hotpluggable='yes'/> + </vcpus> + <os> + <type arch='x86_64' machine='pc'>hvm</type> + <boot dev='network'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + <topology sockets='4' dies='1' clusters='1' cores='2' threads='1'/> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-live.xml new file mode 100644 index 000000000000..110c935f1c56 --- /dev/null +++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-live.xml @@ -0,0 +1,50 @@ +<domain type='qemu' id='7'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static' current='4'>8</vcpu> + <vcpus> + <vcpu id='0' enabled='yes' hotpluggable='no'/> + <vcpu id='1' enabled='yes' hotpluggable='no'/> + <vcpu id='2' enabled='yes' hotpluggable='no'/> + <vcpu id='3' enabled='yes' hotpluggable='no'/> + <vcpu id='4' enabled='no' hotpluggable='yes'/> + <vcpu id='5' enabled='no' hotpluggable='yes'/> + <vcpu id='6' enabled='no' hotpluggable='yes'/> + <vcpu id='7' enabled='no' hotpluggable='yes'/> + </vcpus> + <os> + <type arch='x86_64' machine='pc'>hvm</type> + <boot dev='network'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + <topology sockets='4' dies='1' clusters='1' cores='2' threads='1'/> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='piix3-uhci'> + <alias name='usb'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'> + <alias name='pci.0'/> + </controller> + <input type='mouse' bus='ps2'> + <alias name='input0'/> + </input> + <input type='keyboard' bus='ps2'> + <alias name='input1'/> + </input> + <audio id='1' type='none'/> + <memballoon model='virtio'> + <alias name='balloon0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-pending-live.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-pending-live.xml new file mode 100644 index 000000000000..1b843827aaeb --- /dev/null +++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-downscale-async-result-pending-live.xml @@ -0,0 +1,50 @@ +<domain type='qemu' id='7'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static'>8</vcpu> + <vcpus> + <vcpu id='0' enabled='yes' hotpluggable='no'/> + <vcpu id='1' enabled='yes' hotpluggable='no'/> + <vcpu id='2' enabled='yes' hotpluggable='no'/> + <vcpu id='3' enabled='yes' hotpluggable='no'/> + <vcpu id='4' enabled='yes' hotpluggable='yes'/> + <vcpu id='5' enabled='yes' hotpluggable='yes'/> + <vcpu id='6' enabled='yes' hotpluggable='yes'/> + <vcpu id='7' enabled='yes' hotpluggable='yes'/> + </vcpus> + <os> + <type arch='x86_64' machine='pc'>hvm</type> + <boot dev='network'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + <topology sockets='4' dies='1' clusters='1' cores='2' threads='1'/> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='piix3-uhci'> + <alias name='usb'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'> + <alias name='pci.0'/> + </controller> + <input type='mouse' bus='ps2'> + <alias name='input0'/> + </input> + <input type='keyboard' bus='ps2'> + <alias name='input1'/> + </input> + <audio id='1' type='none'/> + <memballoon model='virtio'> + <alias name='balloon0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </memballoon> + </devices> +</domain> -- 2.47.3
