From: hongleiwang <honglei.wang@xxxxxxxxxx> QEMU has supported nvme disk emulation for a long time, see: https://qemu-project.gitlab.io/qemu/system/devices/nvme.html. The following patches introduce nvme and nvme-ns disk bus type: A disk with nvme as bus is represented as nvme disk that contains only one nvme namespace. In XML, it can be used like this: <devices> ... <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/tmp/data.img'/> <target dev='nvmea' bus='nvme'/> <serial>nvme-serial-value</serial> </disk> ... </devices> A disk with nvme-ns as bus is represented as an nvme namespace and needs to be attached to an nvme controller. In XML, it can be used like this: <devices> ... <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/tmp/data.img'/> <target dev='nvmensa' bus='nvme-ns'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='nvme' index='0'> <serial>nvme-controller-serial-value</serial> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller> ... </devices> ray (5): qemu: Add support for NVMe disk bus type qemu: Add support for NVMe namespace disk bus type qemu_capabilities: Add support for NVMe disk capabilities docs: Add NVMe and NVMe namespace disk bus types to documentation tests: Add test case for NVMe device configuration docs/formatdomain.rst | 5 ++- src/conf/domain_conf.c | 42 +++++++++++++++++++ src/conf/domain_conf.h | 8 ++++ src/conf/domain_postparse.c | 4 ++ src/conf/domain_validate.c | 5 ++- src/conf/schemas/domaincommon.rng | 12 +++++- src/conf/virconftypes.h | 2 + src/hyperv/hyperv_driver.c | 4 ++ src/qemu/qemu_alias.c | 2 + src/qemu/qemu_capabilities.c | 10 +++++ src/qemu/qemu_capabilities.h | 2 + src/qemu/qemu_command.c | 31 ++++++++++++++ src/qemu/qemu_domain_address.c | 30 +++++++++++-- src/qemu/qemu_domain_address.h | 4 ++ src/qemu/qemu_hotplug.c | 14 +++++++ src/qemu/qemu_postparse.c | 1 + src/qemu/qemu_validate.c | 40 ++++++++++++++++++ src/test/test_driver.c | 4 ++ src/util/virutil.c | 2 +- src/vbox/vbox_common.c | 3 ++ src/vmx/vmx.c | 2 + tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_10.0.0.s390x.xml | 2 + tests/domaincapsdata/qemu_10.0.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml | 2 + tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml | 2 + tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml | 2 + tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 2 + .../domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml | 2 + tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml | 2 + tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml | 2 + tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml | 2 + tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.2.0.ppc.xml | 2 + tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 2 + .../qemu_8.2.0-tcg-virt.loongarch64.xml | 2 + tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml | 2 + .../domaincapsdata/qemu_8.2.0-virt.loongarch64.xml | 2 + tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 2 + tests/domaincapsdata/qemu_8.2.0.s390x.xml | 2 + tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_9.1.0.s390x.xml | 2 + tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.2.0.s390x.xml | 2 + tests/domaincapsdata/qemu_9.2.0.x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml | 2 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml | 2 + tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml | 2 + tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml | 2 + tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml | 2 + tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml | 2 + tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 2 + tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml | 2 + .../caps_7.0.0_aarch64+hvf.xml | 2 + tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml | 2 + tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 2 + tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 2 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 2 + .../qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 2 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml | 2 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml | 2 + tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml | 2 + .../caps_8.2.0_loongarch64.xml | 2 + tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml | 2 + tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml | 2 + tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml | 2 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml | 2 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 2 + .../disk-nvme-device.x86_64-latest.args | 38 +++++++++++++++++ .../disk-nvme-device.x86_64-latest.xml | 49 ++++++++++++++++++++++ tests/qemuxmlconfdata/disk-nvme-device.xml | 46 ++++++++++++++++++++ tests/qemuxmlconftest.c | 1 + 133 files changed, 569 insertions(+), 8 deletions(-) create mode 100644 tests/qemuxmlconfdata/disk-nvme-device.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/disk-nvme-device.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/disk-nvme-device.xml -- 2.11.0