diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c
index 553b93d23b..9a203bd440 100644
--- a/tests/qemuhotplugtest.c
+++ b/tests/qemuhotplugtest.c
@@ -773,6 +773,10 @@ mymain(void)
DO_TEST_CPU_GROUP("x86-modern-bulk", 7, true, false);
DO_TEST_CPU_GROUP("x86-old-bulk", 7, false, false);
+ DO_TEST_CPU_GROUP("ppc64-modern-bulk", 24, true, false);
+ DO_TEST_CPU_GROUP("ppc64-modern-bulk", 15, true, true);
+ DO_TEST_CPU_GROUP("ppc64-modern-bulk", 23, true, true);
+ DO_TEST_CPU_GROUP("ppc64-modern-bulk", 25, true, true);
qemuTestDriverFree(&driver);
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-domain.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-domain.xml
new file mode 100644
index 0000000000..eb04e42b6b
--- /dev/null
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-domain.xml
@@ -0,0 +1,20 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 32
+
+ hvm
+
+
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-monitor.json b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-monitor.json
new file mode 100644
index 0000000000..c139426b7b
--- /dev/null
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-monitor.json
@@ -0,0 +1,593 @@
+{"execute":"query-hotpluggable-cpus","id":"libvirt-1"}
+
+{
+ "return": [
+ {
+ "props": {
+ "core-id": 24
+ },
+ "vcpus-count": 8,
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 16
+ },
+ "vcpus-count": 8,
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 8
+ },
+ "vcpus-count": 8,
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 0
+ },
+ "vcpus-count": 8,
+ "qom-path": "/machine/unattached/device[1]",
+ "type": "host-spapr-cpu-core"
+ }
+ ],
+ "id": "libvirt-15"
+}
+
+{"execute":"query-cpus","id":"libvirt-2"}
+
+{
+ "return": [
+ {
+ "arch": "ppc",
+ "current": true,
+ "CPU": 0,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[0]",
+ "halted": false,
+ "thread_id": 21925
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 1,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[1]",
+ "halted": false,
+ "thread_id": 21926
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 2,
+ "nip": -4611686018422360608,
+ "qom_path": "/machine/unattached/device[1]/thread[2]",
+ "halted": false,
+ "thread_id": 21927
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 3,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[3]",
+ "halted": false,
+ "thread_id": 21928
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 4,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[4]",
+ "halted": false,
+ "thread_id": 21930
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 5,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[5]",
+ "halted": false,
+ "thread_id": 21931
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 6,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[6]",
+ "halted": false,
+ "thread_id": 21932
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 7,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[7]",
+ "halted": false,
+ "thread_id": 21933
+ }
+ ],
+ "id": "libvirt-12"
+}
+
+{
+ "execute": "device_add",
+ "arguments": {
+ "driver": "host-spapr-cpu-core",
+ "id": "vcpu8",
+ "core-id": 8
+ },
+ "id": "libvirt-3"
+}
+
+{"return": {}}
+
+{"execute":"query-hotpluggable-cpus","id":"libvirt-4"}
+
+{
+ "return": [
+ {
+ "props": {
+ "core-id": 24
+ },
+ "vcpus-count": 8,
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 16
+ },
+ "vcpus-count": 8,
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 8
+ },
+ "vcpus-count": 8,
+ "qom-path": "/machine/peripheral/vcpu1",
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 0
+ },
+ "vcpus-count": 8,
+ "qom-path": "/machine/unattached/device[1]",
+ "type": "host-spapr-cpu-core"
+ }
+ ],
+ "id": "libvirt-15"
+}
+
+{"execute":"query-cpus","id":"libvirt-5"}
+
+{
+ "return": [
+ {
+ "arch": "ppc",
+ "current": true,
+ "CPU": 0,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[0]",
+ "halted": false,
+ "thread_id": 21925
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 1,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[1]",
+ "halted": false,
+ "thread_id": 21926
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 2,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[2]",
+ "halted": false,
+ "thread_id": 21927
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 3,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[3]",
+ "halted": false,
+ "thread_id": 21928
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 4,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[4]",
+ "halted": false,
+ "thread_id": 21930
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 5,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[5]",
+ "halted": false,
+ "thread_id": 21931
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 6,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[6]",
+ "halted": false,
+ "thread_id": 21932
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 7,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[7]",
+ "halted": false,
+ "thread_id": 21933
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 8,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[0]",
+ "halted": false,
+ "thread_id": 22131
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 9,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[1]",
+ "halted": false,
+ "thread_id": 22132
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 10,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[2]",
+ "halted": false,
+ "thread_id": 22133
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 11,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[3]",
+ "halted": false,
+ "thread_id": 22134
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 12,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[4]",
+ "halted": false,
+ "thread_id": 22135
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 13,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[5]",
+ "halted": false,
+ "thread_id": 22136
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 14,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[6]",
+ "halted": false,
+ "thread_id": 22137
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 15,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[7]",
+ "halted": false,
+ "thread_id": 22138
+ }
+ ],
+ "id": "libvirt-14"
+}
+
+{
+ "execute": "device_add",
+ "arguments": {
+ "driver": "host-spapr-cpu-core",
+ "id": "vcpu16",
+ "core-id": 16
+ },
+ "id": "libvirt-6"
+}
+
+{"return": {}}
+
+{"execute":"query-hotpluggable-cpus","id":"libvirt-7"}
+
+{
+ "return": [
+ {
+ "props": {
+ "core-id": 24
+ },
+ "vcpus-count": 8,
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 16
+ },
+ "vcpus-count": 8,
+ "qom-path": "/machine/peripheral/vcpu2",
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 8
+ },
+ "vcpus-count": 8,
+ "qom-path": "/machine/peripheral/vcpu1",
+ "type": "host-spapr-cpu-core"
+ },
+ {
+ "props": {
+ "core-id": 0
+ },
+ "vcpus-count": 8,
+ "qom-path": "/machine/unattached/device[1]",
+ "type": "host-spapr-cpu-core"
+ }
+ ],
+ "id": "libvirt-15"
+}
+
+{"execute":"query-cpus","id":"libvirt-8"}
+
+{
+ "return": [
+ {
+ "arch": "ppc",
+ "current": true,
+ "CPU": 0,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[0]",
+ "halted": false,
+ "thread_id": 21925
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 1,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[1]",
+ "halted": false,
+ "thread_id": 21926
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 2,
+ "nip": -4611686018422360576,
+ "qom_path": "/machine/unattached/device[1]/thread[2]",
+ "halted": false,
+ "thread_id": 21927
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 3,
+ "nip": -4611686018422360596,
+ "qom_path": "/machine/unattached/device[1]/thread[3]",
+ "halted": false,
+ "thread_id": 21928
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 4,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[4]",
+ "halted": false,
+ "thread_id": 21930
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 5,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[5]",
+ "halted": false,
+ "thread_id": 21931
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 6,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/unattached/device[1]/thread[6]",
+ "halted": false,
+ "thread_id": 21932
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 7,
+ "nip": -4611686018422360596,
+ "qom_path": "/machine/unattached/device[1]/thread[7]",
+ "halted": false,
+ "thread_id": 21933
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 8,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[0]",
+ "halted": false,
+ "thread_id": 22131
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 9,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[1]",
+ "halted": false,
+ "thread_id": 22132
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 10,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[2]",
+ "halted": false,
+ "thread_id": 22133
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 11,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[3]",
+ "halted": false,
+ "thread_id": 22134
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 12,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[4]",
+ "halted": false,
+ "thread_id": 22135
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 13,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[5]",
+ "halted": false,
+ "thread_id": 22136
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 14,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[6]",
+ "halted": false,
+ "thread_id": 22137
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 15,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu1/thread[7]",
+ "halted": false,
+ "thread_id": 22138
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 16,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[0]",
+ "halted": false,
+ "thread_id": 22223
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 17,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[1]",
+ "halted": false,
+ "thread_id": 22224
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 18,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[2]",
+ "halted": false,
+ "thread_id": 22225
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 19,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[3]",
+ "halted": false,
+ "thread_id": 22226
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 20,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[4]",
+ "halted": false,
+ "thread_id": 22227
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 21,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[5]",
+ "halted": false,
+ "thread_id": 22228
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 22,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[6]",
+ "halted": false,
+ "thread_id": 22229
+ },
+ {
+ "arch": "ppc",
+ "current": false,
+ "CPU": 23,
+ "nip": -4611686018426772172,
+ "qom_path": "/machine/peripheral/vcpu2/thread[7]",
+ "halted": false,
+ "thread_id": 22230
+ }
+ ],
+ "id": "libvirt-17"
+}
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
new file mode 100644
index 0000000000..bd792eaae5
--- /dev/null
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
@@ -0,0 +1,64 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hvm
+
+
+
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
new file mode 100644
index 0000000000..da40fec89a
--- /dev/null
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
@@ -0,0 +1,72 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hvm
+
+
+
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+