I took the liberty of adjusting Hongwei's QEMU series and made further adjustments so that the common code can be used for reporting NVMe disks from VMX as well. I added SoBs where I thought applicable, but feel free to correct me and/or agree with me.
This series fixes https://issues.redhat.com/browse/RHEL-7390 in the middle, but adds more than just that. Martin Kletzander (11): docs, conf, schemas: Add support for NVMe controller util: Add support for parsing nvmeXnY(pZ) strings conf: Add virDomainDeviceFindNvmeController docs, conf, schemas: Add support for NVMe disks vmx: Add support for NVMe disks qemu_capabilities: Add NVMe controller and disk capabilities qemu_capabilities: Add emulated NVMe disk support to domain capabilities qemu: Add support for NVMe controllers qemu: Add support for emulated NVMe disks NEWS: vmx support for NVMe disks NEWS: qemu support for emulated NVMe disks NEWS.rst | 15 +++ docs/formatdomain.rst | 19 +++- src/bhyve/bhyve_command.c | 1 + src/conf/domain_conf.c | 96 ++++++++++++++++- src/conf/domain_conf.h | 10 ++ src/conf/domain_postparse.c | 2 + src/conf/domain_validate.c | 4 +- src/conf/schemas/domaincommon.rng | 22 +++- src/conf/virconftypes.h | 2 + src/hyperv/hyperv_driver.c | 2 + src/libxl/libxl_driver.c | 2 +- src/qemu/qemu_alias.c | 1 + src/qemu/qemu_capabilities.c | 7 ++ src/qemu/qemu_capabilities.h | 2 + src/qemu/qemu_command.c | 33 +++++- src/qemu/qemu_domain_address.c | 5 + src/qemu/qemu_hotplug.c | 10 +- src/qemu/qemu_postparse.c | 1 + src/qemu/qemu_validate.c | 65 ++++++++++-- src/test/test_driver.c | 2 + src/util/virutil.c | 94 ++++++++++++++-- src/util/virutil.h | 7 +- src/vbox/vbox_common.c | 4 +- src/vmx/vmx.c | 85 ++++++++++++++- src/vz/vz_sdk.c | 6 +- .../qemu_10.0.0-q35.x86_64+amdsev.xml | 1 + .../domaincapsdata/qemu_10.0.0-q35.x86_64.xml | 1 + .../qemu_10.0.0-tcg.x86_64+amdsev.xml | 1 + .../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml | 1 + .../qemu_10.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_10.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_10.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_10.0.0.s390x.xml | 1 + .../qemu_10.0.0.x86_64+amdsev.xml | 1 + tests/domaincapsdata/qemu_10.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 1 + .../qemu_7.2.0-hvf.x86_64+hvf.xml | 1 + .../domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 1 + .../qemu_7.2.0-tcg.x86_64+hvf.xml | 1 + .../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.2.0.ppc.xml | 1 + tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 1 + .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 1 + .../qemu_8.2.0-tcg-virt.loongarch64.xml | 1 + .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 1 + .../qemu_8.2.0-virt.aarch64.xml | 1 + .../qemu_8.2.0-virt.loongarch64.xml | 1 + tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 1 + tests/domaincapsdata/qemu_8.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 1 + .../qemu_9.1.0-tcg-virt.riscv64.xml | 1 + .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 1 + .../qemu_9.1.0-virt.riscv64.xml | 1 + tests/domaincapsdata/qemu_9.1.0.s390x.xml | 1 + tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 1 + .../qemu_9.2.0-hvf.aarch64+hvf.xml | 1 + .../qemu_9.2.0-q35.x86_64+amdsev.xml | 1 + .../domaincapsdata/qemu_9.2.0-q35.x86_64.xml | 1 + .../qemu_9.2.0-tcg.x86_64+amdsev.xml | 1 + .../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_9.2.0.s390x.xml | 1 + .../qemu_9.2.0.x86_64+amdsev.xml | 1 + tests/domaincapsdata/qemu_9.2.0.x86_64.xml | 1 + .../genericxml2xmlindata/controller-nvme.xml | 21 ++++ .../disk-nvme-invalid-serials.xml | 29 +++++ tests/genericxml2xmlindata/disk-nvme.xml | 32 ++++++ tests/genericxml2xmloutdata/disk-nvme.xml | 38 +++++++ tests/genericxml2xmltest.c | 4 + .../caps_10.0.0_aarch64.xml | 2 + .../caps_10.0.0_ppc64.xml | 2 + .../caps_10.0.0_s390x.xml | 2 + .../caps_10.0.0_x86_64+amdsev.xml | 2 + .../caps_10.0.0_x86_64.xml | 2 + .../qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 2 + .../caps_6.2.0_x86_64.xml | 2 + .../qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 2 + .../caps_7.0.0_x86_64.xml | 2 + .../qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 2 + .../caps_7.1.0_x86_64.xml | 2 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 2 + .../caps_7.2.0_x86_64+hvf.xml | 2 + .../caps_7.2.0_x86_64.xml | 2 + .../caps_8.0.0_x86_64.xml | 2 + .../caps_8.1.0_x86_64.xml | 2 + .../caps_8.2.0_aarch64.xml | 2 + .../caps_8.2.0_armv7l.xml | 2 + .../caps_8.2.0_loongarch64.xml | 2 + .../qemucapabilitiesdata/caps_8.2.0_s390x.xml | 2 + .../caps_8.2.0_x86_64.xml | 2 + .../caps_9.0.0_x86_64.xml | 2 + .../caps_9.1.0_riscv64.xml | 2 + .../qemucapabilitiesdata/caps_9.1.0_s390x.xml | 2 + .../caps_9.1.0_x86_64.xml | 2 + .../caps_9.2.0_aarch64+hvf.xml | 2 + .../qemucapabilitiesdata/caps_9.2.0_s390x.xml | 2 + .../caps_9.2.0_x86_64+amdsev.xml | 2 + .../caps_9.2.0_x86_64.xml | 2 + .../disk-target-nvme.x86_64-latest.args | 39 +++++++ .../disk-target-nvme.x86_64-latest.xml | 53 ++++++++++ tests/qemuxmlconfdata/disk-target-nvme.xml | 32 ++++++ tests/qemuxmlconftest.c | 1 + tests/utiltest.c | 38 ++++--- tests/vmx2xmldata/esx-in-the-wild-15.vmx | 100 ++++++++++++++++++ tests/vmx2xmldata/esx-in-the-wild-15.xml | 45 ++++++++ tests/vmx2xmldata/esx-in-the-wild-16.vmx | 91 ++++++++++++++++ tests/vmx2xmldata/esx-in-the-wild-16.xml | 37 +++++++ tests/vmx2xmltest.c | 2 + 129 files changed, 1128 insertions(+), 49 deletions(-) create mode 100644 tests/genericxml2xmlindata/controller-nvme.xml create mode 100644 tests/genericxml2xmlindata/disk-nvme-invalid-serials.xml create mode 100644 tests/genericxml2xmlindata/disk-nvme.xml create mode 100644 tests/genericxml2xmloutdata/disk-nvme.xml create mode 100644 tests/qemuxmlconfdata/disk-target-nvme.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/disk-target-nvme.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/disk-target-nvme.xml create mode 100644 tests/vmx2xmldata/esx-in-the-wild-15.vmx create mode 100644 tests/vmx2xmldata/esx-in-the-wild-15.xml create mode 100644 tests/vmx2xmldata/esx-in-the-wild-16.vmx create mode 100644 tests/vmx2xmldata/esx-in-the-wild-16.xml -- 2.49.0