From: hongleiwang <honglei.wang(a)smartx.com>
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