On Sun, Apr 27, 2025 at 19:48:06 +0800, honglei.wang(a)smartx.com wrote:
From: ray <honglei.wang(a)smartx.com>
Signed-off-by: ray <honglei.wang(a)smartx.com>
---
.../disk-nvme-ns-device.x86_64-latest.args | 36 +++++++++++++++++++
.../disk-nvme-ns-device.x86_64-latest.xml | 42 ++++++++++++++++++++++
tests/qemuxmlconfdata/disk-nvme-ns-device.xml | 41 +++++++++++++++++++++
tests/qemuxmlconftest.c | 1 +
4 files changed, 120 insertions(+)
create mode 100644 tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/disk-nvme-ns-device.xml
diff --git a/tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.args
b/tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.args
new file mode 100644
index 0000000000..d5971a4407
--- /dev/null
+++ b/tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.args
@@ -0,0 +1,36 @@
[...]
+-device
'{"driver":"nvme","id":"nvme0","serial":"nvme-controller-abcdef","bus":"pci.0","addr":"0x5"}'
\
+-blockdev
'{"driver":"file","filename":"/tmp/data-1.img","node-name":"libvirt-1-storage","read-only":false}'
\
+-device
'{"driver":"nvme-ns","bus":"nvme0","drive":"libvirt-1-storage","id":"nvme-ns0-0-0","bootindex":1}'
\
Hmm, does bootindex even work here? Shouldn't the bootindex apply to the
controller instead?
[...]
diff --git a/tests/qemuxmlconfdata/disk-nvme-ns-device.xml
b/tests/qemuxmlconfdata/disk-nvme-ns-device.xml
new file mode 100644
index 0000000000..88bb5956e5
--- /dev/null
+++ b/tests/qemuxmlconfdata/disk-nvme-ns-device.xml
@@ -0,0 +1,41 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <cpu mode='custom' match='exact' check='none'>
+ <model fallback='forbid'>qemu64</model>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <disk type='file' device='disk'>
+ <source file='/tmp/data-1.img'/>
+ <target dev='nvmensa' bus='nvme-ns'/>
So since the controller type is 'nvme' the value of 'bus' ought to be
'nvme' as well instead of 'nvme-ns'. Same way as we have with
'scsi'.
I also thing that the prefix of dev should be just 'nvme'. Note that the
dev prefix is a libvirt identifier which may (and in this case will not)
be same as in the guest.
Also since the controller supports multiple namespaces please add an
example which does so.
+ <address type='drive' controller='0'
bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0' model='piix3-uhci'>
+ <address type='pci' domain='0x0000' bus='0x00'
slot='0x01' function='0x2'/>
+ </controller>
+ <controller type='pci' index='0' model='pci-root'/>
+ <controller type='scsi' index='0'
model='virtio-scsi'>
+ <address type='pci' domain='0x0000' bus='0x00'
slot='0x03' function='0x0'/>
+ </controller>
+ <controller type='nvme' index='0'>
+ <serial>nvme-controller-abcdef</serial>
[1]
Indentation of the XML is incorrect here.
+ <address type='pci' domain='0x0000'
bus='0x00' slot='0x05' function='0x0'/>
+ </controller>
Also since multiple nvme controllers are possible please add an example
without serial. As noted above at least one of the examples ought to
have multiple namespaces to show the setup.
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <audio id='1' type='none'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>