]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
node_device: mdev matrix support
authorShalini Chellathurai Saroja <shalini@linux.ibm.com>
Thu, 3 Dec 2020 17:59:42 +0000 (18:59 +0100)
committerErik Skultety <eskultet@redhat.com>
Wed, 9 Dec 2020 13:03:05 +0000 (14:03 +0100)
Allow mdev devices to be created on the matrix device.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/node_device/node_device_driver.c
src/node_device/node_device_udev.c

index 65c647f5d69b42f3a571e53b724dd9ea5604357c..e254b49244fbd636f1c618cdd743054ea4482c36 100644 (file)
@@ -662,6 +662,10 @@ nodeDeviceFindAddressByName(const char *name)
             break;
             }
 
+        case VIR_NODE_DEV_CAP_AP_MATRIX:
+            addr = g_strdup(caps->data.ap_matrix.addr);
+            break;
+
         case VIR_NODE_DEV_CAP_SYSTEM:
         case VIR_NODE_DEV_CAP_USB_DEV:
         case VIR_NODE_DEV_CAP_USB_INTERFACE:
@@ -680,7 +684,6 @@ nodeDeviceFindAddressByName(const char *name)
         case VIR_NODE_DEV_CAP_VDPA:
         case VIR_NODE_DEV_CAP_AP_CARD:
         case VIR_NODE_DEV_CAP_AP_QUEUE:
-        case VIR_NODE_DEV_CAP_AP_MATRIX:
         case VIR_NODE_DEV_CAP_LAST:
             break;
         }
index 5782074f40aaae13bb4b58daeab605b410ba6028..f10337be1f048053f878ca4e052445bdbd3ac871 100644 (file)
@@ -1235,12 +1235,16 @@ udevProcessAPQueue(struct udev_device *device,
 
 
 static int
-udevProcessAPMatrix(virNodeDeviceDefPtr def)
+udevProcessAPMatrix(struct udev_device *device,
+                    virNodeDeviceDefPtr def)
 {
     /* Both udev_device_get_sysname and udev_device_get_subsystem return
      * "matrix" for an AP matrix device, so in order to prevent confusion in
      * naming, let's fallback to hardcoding the name.
      */
+    virNodeDevCapDataPtr data = &def->caps->data;
+
+    data->ap_matrix.addr =  g_strdup(udev_device_get_sysname(device));
     def->name = g_strdup("ap_matrix");
 
     return 0;
@@ -1387,7 +1391,7 @@ udevGetDeviceDetails(struct udev_device *device,
     case VIR_NODE_DEV_CAP_AP_QUEUE:
         return udevProcessAPQueue(device, def);
     case VIR_NODE_DEV_CAP_AP_MATRIX:
-        return udevProcessAPMatrix(def);
+        return udevProcessAPMatrix(device, def);
     case VIR_NODE_DEV_CAP_MDEV_TYPES:
     case VIR_NODE_DEV_CAP_SYSTEM:
     case VIR_NODE_DEV_CAP_FC_HOST: