diff --git a/tests/qemuxml2argvdata/disk-arm-virtio-sd.aarch64-4.0.0.args b/tests/qemuxml2argvdata/disk-arm-virtio-sd.aarch64-4.0.0.args
new file mode 100644
index 0000000000..3c2a7cf240
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-arm-virtio-sd.aarch64-4.0.0.args
@@ -0,0 +1,39 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/tmp/lib/domain--1-armtest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/tmp/lib/domain--1-armtest/.local/share \
+XDG_CACHE_HOME=/tmp/lib/domain--1-armtest/.cache \
+XDG_CONFIG_HOME=/tmp/lib/domain--1-armtest/.config \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-arm \
+-name guest=armtest,debug-threads=on \
+-S \
+-object secret,id=masterKey0,format=raw,\
+file=/tmp/lib/domain--1-armtest/master-key.aes \
+-machine vexpress-a9,accel=tcg,usb=off,dump-guest-core=off \
+-m 1024 \
+-overcommit mem-lock=off \
+-smp 1,sockets=1,cores=1,threads=1 \
+-uuid 496d7ea8-9739-544b-4ebd-ef08be936e6a \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server,nowait \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-kernel /arm.kernel \
+-initrd /arm.initrd \
+-append 'console=ttyAMA0,\
+115200n8 rw root=/dev/vda3 rootwait physmap.enabled=0' \
+-dtb /arm.dtb \
+-usb \
+-drive file=/arm-sd.qcow2,format=qcow2,if=sd,index=0 \
+-drive file=/arm-virtio.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \
+-device virtio-blk-device,scsi=off,drive=drive-virtio-disk0,id=virtio-disk0 \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\
+resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-arm-virtio-sd.aarch64-latest.args b/tests/qemuxml2argvdata/disk-arm-virtio-sd.aarch64-latest.args
new file mode 100644
index 0000000000..7147dfee76
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-arm-virtio-sd.aarch64-latest.args
@@ -0,0 +1,40 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/tmp/lib/domain--1-armtest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/tmp/lib/domain--1-armtest/.local/share \
+XDG_CACHE_HOME=/tmp/lib/domain--1-armtest/.cache \
+XDG_CONFIG_HOME=/tmp/lib/domain--1-armtest/.config \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-arm \
+-name guest=armtest,debug-threads=on \
+-S \
+-object secret,id=masterKey0,format=raw,\
+file=/tmp/lib/domain--1-armtest/master-key.aes \
+-machine vexpress-a9,accel=tcg,usb=off,dump-guest-core=off \
+-cpu cortex-a9 \
+-m 1024 \
+-overcommit mem-lock=off \
+-smp 1,sockets=1,cores=1,threads=1 \
+-uuid 496d7ea8-9739-544b-4ebd-ef08be936e6a \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server,nowait \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-kernel /arm.kernel \
+-initrd /arm.initrd \
+-append 'console=ttyAMA0,\
+115200n8 rw root=/dev/vda3 rootwait physmap.enabled=0' \
+-dtb /arm.dtb \
+-usb \
+-drive file=/arm-sd.qcow2,format=qcow2,if=sd,index=0 \
+-drive file=/arm-virtio.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \
+-device virtio-blk-device,scsi=off,drive=drive-virtio-disk0,id=virtio-disk0 \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\
+resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-arm-virtio-sd.xml b/tests/qemuxml2argvdata/disk-arm-virtio-sd.xml
new file mode 100644
index 0000000000..0a6482fd4a
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-arm-virtio-sd.xml
@@ -0,0 +1,36 @@
+
+ armtest
+ 496d7ea8-9739-544b-4ebd-ef08be936e6a
+ 1048576
+ 1048576
+ 1
+
+ hvm
+ /arm.kernel
+ /arm.initrd
+ /arm.dtb
+ console=ttyAMA0,115200n8 rw root=/dev/vda3 rootwait physmap.enabled=0
+
+
+
+
+
+
+
+ destroy
+ restart
+ restart
+
+ /usr/bin/qemu-system-arm
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index ad89353910..4ab664a846 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1175,6 +1175,9 @@ mymain(void)
DO_TEST_CAPS_LATEST("disk-slices");
+ DO_TEST_CAPS_ARCH_VER("disk-arm-virtio-sd", "aarch64", "4.0.0");
+ DO_TEST_CAPS_ARCH_LATEST("disk-arm-virtio-sd", "aarch64");
+
DO_TEST("graphics-egl-headless",
QEMU_CAPS_EGL_HEADLESS,
QEMU_CAPS_DEVICE_CIRRUS_VGA);
diff --git a/tests/qemuxml2xmloutdata/disk-arm-virtio-sd.aarch64-latest.xml b/tests/qemuxml2xmloutdata/disk-arm-virtio-sd.aarch64-latest.xml
new file mode 100644
index 0000000000..024db53ffb
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/disk-arm-virtio-sd.aarch64-latest.xml
@@ -0,0 +1,41 @@
+
+ armtest
+ 496d7ea8-9739-544b-4ebd-ef08be936e6a
+ 1048576
+ 1048576
+ 1
+
+ hvm
+ /arm.kernel
+ /arm.initrd
+ console=ttyAMA0,115200n8 rw root=/dev/vda3 rootwait physmap.enabled=0
+ /arm.dtb
+
+
+
+
+
+
+
+
+ cortex-a9
+
+
+ destroy
+ restart
+ restart
+
+ /usr/bin/qemu-system-arm
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 34a9f2803a..e7480fcf9d 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -643,6 +643,8 @@ mymain(void)
DO_TEST("disk-serial", NONE);
+ DO_TEST_CAPS_ARCH_LATEST("disk-arm-virtio-sd", "aarch64");
+
DO_TEST("virtio-rng-random",
QEMU_CAPS_DEVICE_VIRTIO_RNG);
DO_TEST("virtio-rng-egd",