From: Michal Privoznik <[email protected]>

Similarly to SCSI and SATA controllers (see previous commits),
parse and report PCI address for NVMe controllers.

Signed-off-by: Michal Privoznik <[email protected]>
---
 src/vmx/vmx.c                            | 12 ++++++++++--
 tests/vmx2xmldata/esx-in-the-wild-15.xml |  4 +++-
 tests/vmx2xmldata/esx-in-the-wild-16.xml |  4 +++-
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index 8cb04f8490..0fee7c0e7e 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -2277,6 +2277,8 @@ virVMXParseNVMEController(virDomainDef *def,
                           int controllerIdx,
                           bool *present)
 {
+    virDomainControllerDef *controllerDef = NULL;
+    g_autofree char *pciSlotNumberName = NULL;
     char present_name[32];
 
     if (controllerIdx < 0 || controllerIdx > 3) {
@@ -2294,8 +2296,14 @@ virVMXParseNVMEController(virDomainDef *def,
     if (!*present)
         return 0;
 
-    virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_NVME,
-                              controllerIdx, -1);
+    controllerDef = virDomainDefAddController(def, 
VIR_DOMAIN_CONTROLLER_TYPE_NVME,
+                                              controllerIdx, -1);
+
+    pciSlotNumberName = g_strdup_printf("nvme%d.pciSlotNumber", controllerIdx);
+
+    if (virVMXPCISlotNumber(conf, pciSlotNumberName, &controllerDef->info) < 0)
+        return -1;
+
     return 0;
 }
 
diff --git a/tests/vmx2xmldata/esx-in-the-wild-15.xml 
b/tests/vmx2xmldata/esx-in-the-wild-15.xml
index cc4a9d1631..2a169864d6 100644
--- a/tests/vmx2xmldata/esx-in-the-wild-15.xml
+++ b/tests/vmx2xmldata/esx-in-the-wild-15.xml
@@ -33,7 +33,9 @@
       <target dev='nvme0n2' bus='nvme'/>
       <address type='drive' controller='0' bus='0' target='0' unit='1'/>
     </disk>
-    <controller type='nvme' index='0'/>
+    <controller type='nvme' index='0'>
+      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' 
function='0x0'/>
+    </controller>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:50:56:83:c9:0c' type='generated'/>
diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml 
b/tests/vmx2xmldata/esx-in-the-wild-16.xml
index 5d3b2163ed..37023ef4f0 100644
--- a/tests/vmx2xmldata/esx-in-the-wild-16.xml
+++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml
@@ -32,7 +32,9 @@
     <controller type='sata' index='0'>
       <address type='pci' domain='0x0000' bus='0x01' slot='0x02' 
function='0x0'/>
     </controller>
-    <controller type='nvme' index='0'/>
+    <controller type='nvme' index='0'>
+      <address type='pci' domain='0x0000' bus='0x01' slot='0x03' 
function='0x0'/>
+    </controller>
     <interface type='bridge'>
       <mac address='00:50:56:a0:a6:7e' type='generated'/>
       <source bridge='VM Network'/>
-- 
2.54.0

Reply via email to