[libvirt] [PATCH] nodedev: Introduce new drm cap

Michal Privoznik posted 1 patch 7 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/78c018693b4090a5ae9716276ed2ac60da4814ef.1487344778.git.mprivozn@redhat.com
include/libvirt/libvirt-nodedev.h | 1 +
src/conf/node_device_conf.c       | 3 ++-
src/conf/node_device_conf.h       | 3 ++-
src/libvirt-nodedev.c             | 1 +
tools/virsh-nodedev.c             | 7 +++++--
tools/virsh.pod                   | 6 +++---
6 files changed, 14 insertions(+), 7 deletions(-)
[libvirt] [PATCH] nodedev: Introduce new drm cap
Posted by Michal Privoznik 7 years, 2 months ago
After 7f1bdec5fa0a0cd25 our nodedev driver is capable of
determining DRM devices (DRM stands for Direct Render Manager not
Digital rights management). There is still one bit missing
though: virConnectListAllNodeDevices() is capable of listing
either all devices or just those with specified capability. Well,
DRM capability is missing there.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 include/libvirt/libvirt-nodedev.h | 1 +
 src/conf/node_device_conf.c       | 3 ++-
 src/conf/node_device_conf.h       | 3 ++-
 src/libvirt-nodedev.c             | 1 +
 tools/virsh-nodedev.c             | 7 +++++--
 tools/virsh.pod                   | 6 +++---
 6 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/include/libvirt/libvirt-nodedev.h b/include/libvirt/libvirt-nodedev.h
index 4ff8b416a..85003903d 100644
--- a/include/libvirt/libvirt-nodedev.h
+++ b/include/libvirt/libvirt-nodedev.h
@@ -78,6 +78,7 @@ typedef enum {
     VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST       = 1 << 9,  /* FC Host Bus Adapter */
     VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS        = 1 << 10, /* Capable of vport */
     VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC  = 1 << 11, /* Capable of scsi_generic */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM           = 1 << 12, /* DRM device */
 } virConnectListAllNodeDeviceFlags;
 
 int                     virConnectListAllNodeDevices (virConnectPtr conn,
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index f996db115..b3063d9ec 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -2224,7 +2224,8 @@ virNodeDeviceMatch(virNodeDeviceObjPtr devobj,
               MATCH(STORAGE)       ||
               MATCH(FC_HOST)       ||
               MATCH(VPORTS)        ||
-              MATCH(SCSI_GENERIC)))
+              MATCH(SCSI_GENERIC)  ||
+              MATCH(DRM)))
             return false;
     }
 
diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h
index be7e0e003..40e930a28 100644
--- a/src/conf/node_device_conf.h
+++ b/src/conf/node_device_conf.h
@@ -340,7 +340,8 @@ void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj);
                  VIR_CONNECT_LIST_NODE_DEVICES_CAP_STORAGE       | \
                  VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST       | \
                  VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS        | \
-                 VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC)
+                 VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC  | \
+                 VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM)
 
 typedef bool (*virNodeDeviceObjListFilter)(virConnectPtr conn,
                                            virNodeDeviceDefPtr def);
diff --git a/src/libvirt-nodedev.c b/src/libvirt-nodedev.c
index 6ea14b3e3..83376b0d9 100644
--- a/src/libvirt-nodedev.c
+++ b/src/libvirt-nodedev.c
@@ -97,6 +97,7 @@ virNodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int flags)
  *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST
  *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS
  *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC
+ *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM
  *
  * Returns the number of node devices found or -1 and sets @devices to NULL in
  * case of error.  On success, the array stored into @devices is guaranteed to
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
index 9ede96886..c69144021 100644
--- a/tools/virsh-nodedev.c
+++ b/tools/virsh-nodedev.c
@@ -414,7 +414,7 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
             goto cleanup;
         }
 
-        switch (cap_type) {
+        switch ((virNodeDevCapType) cap_type) {
         case VIR_NODE_DEV_CAP_SYSTEM:
             flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_SYSTEM;
             break;
@@ -451,7 +451,10 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
         case VIR_NODE_DEV_CAP_SCSI_GENERIC:
             flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC;
             break;
-        default:
+        case VIR_NODE_DEV_CAP_DRM:
+            flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM;
+            break;
+        case VIR_NODE_DEV_CAP_LAST:
             break;
         }
     }
diff --git a/tools/virsh.pod b/tools/virsh.pod
index a47040984..90f4b5a1f 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -3072,9 +3072,9 @@ List all of the devices available on the node that are known by libvirt.
 I<cap> is used to filter the list by capability types, the types must be
 separated by comma, e.g. --cap pci,scsi, valid capability types include
 'system', 'pci', 'usb_device', 'usb', 'net', 'scsi_host', 'scsi_target',
-'scsi', 'storage', 'fc_host', 'vports', 'scsi_generic'. If I<--tree> is
-used, the output is formatted in a tree representing parents of each node.
-I<cap> and I<--tree> are mutually exclusive.
+'scsi', 'storage', 'fc_host', 'vports', 'scsi_generic', 'drm'.If I<--tree>
+is used, the output is formatted in a tree representing parents of each
+node.  I<cap> and I<--tree> are mutually exclusive.
 
 =item B<nodedev-reattach> I<nodedev>
 
-- 
2.11.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] nodedev: Introduce new drm cap
Posted by Daniel P. Berrange 7 years, 2 months ago
On Fri, Feb 17, 2017 at 04:19:38PM +0100, Michal Privoznik wrote:
> After 7f1bdec5fa0a0cd25 our nodedev driver is capable of
> determining DRM devices (DRM stands for Direct Render Manager not
> Digital rights management). There is still one bit missing
> though: virConnectListAllNodeDevices() is capable of listing
> either all devices or just those with specified capability. Well,
> DRM capability is missing there.
> 
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
>  include/libvirt/libvirt-nodedev.h | 1 +
>  src/conf/node_device_conf.c       | 3 ++-
>  src/conf/node_device_conf.h       | 3 ++-
>  src/libvirt-nodedev.c             | 1 +
>  tools/virsh-nodedev.c             | 7 +++++--
>  tools/virsh.pod                   | 6 +++---
>  6 files changed, 14 insertions(+), 7 deletions(-)

ACK


Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://entangle-photo.org       -o-    http://search.cpan.org/~danberr/ :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] nodedev: Introduce new drm cap
Posted by Marc-André Lureau 7 years, 2 months ago
Hi

----- Original Message -----
> After 7f1bdec5fa0a0cd25 our nodedev driver is capable of
> determining DRM devices (DRM stands for Direct Render Manager not
> Digital rights management). There is still one bit missing
> though: virConnectListAllNodeDevices() is capable of listing
> either all devices or just those with specified capability. Well,
> DRM capability is missing there.
> 
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

looks good,

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

> ---
>  include/libvirt/libvirt-nodedev.h | 1 +
>  src/conf/node_device_conf.c       | 3 ++-
>  src/conf/node_device_conf.h       | 3 ++-
>  src/libvirt-nodedev.c             | 1 +
>  tools/virsh-nodedev.c             | 7 +++++--
>  tools/virsh.pod                   | 6 +++---
>  6 files changed, 14 insertions(+), 7 deletions(-)
> 
> diff --git a/include/libvirt/libvirt-nodedev.h
> b/include/libvirt/libvirt-nodedev.h
> index 4ff8b416a..85003903d 100644
> --- a/include/libvirt/libvirt-nodedev.h
> +++ b/include/libvirt/libvirt-nodedev.h
> @@ -78,6 +78,7 @@ typedef enum {
>      VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST       = 1 << 9,  /* FC Host
>      Bus Adapter */
>      VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS        = 1 << 10, /* Capable of
>      vport */
>      VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC  = 1 << 11, /* Capable of
>      scsi_generic */
> +    VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM           = 1 << 12, /* DRM device
> */
>  } virConnectListAllNodeDeviceFlags;
>  
>  int                     virConnectListAllNodeDevices (virConnectPtr conn,
> diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
> index f996db115..b3063d9ec 100644
> --- a/src/conf/node_device_conf.c
> +++ b/src/conf/node_device_conf.c
> @@ -2224,7 +2224,8 @@ virNodeDeviceMatch(virNodeDeviceObjPtr devobj,
>                MATCH(STORAGE)       ||
>                MATCH(FC_HOST)       ||
>                MATCH(VPORTS)        ||
> -              MATCH(SCSI_GENERIC)))
> +              MATCH(SCSI_GENERIC)  ||
> +              MATCH(DRM)))
>              return false;
>      }
>  
> diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h
> index be7e0e003..40e930a28 100644
> --- a/src/conf/node_device_conf.h
> +++ b/src/conf/node_device_conf.h
> @@ -340,7 +340,8 @@ void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj);
>                   VIR_CONNECT_LIST_NODE_DEVICES_CAP_STORAGE       | \
>                   VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST       | \
>                   VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS        | \
> -                 VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC)
> +                 VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC  | \
> +                 VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM)
>  
>  typedef bool (*virNodeDeviceObjListFilter)(virConnectPtr conn,
>                                             virNodeDeviceDefPtr def);
> diff --git a/src/libvirt-nodedev.c b/src/libvirt-nodedev.c
> index 6ea14b3e3..83376b0d9 100644
> --- a/src/libvirt-nodedev.c
> +++ b/src/libvirt-nodedev.c
> @@ -97,6 +97,7 @@ virNodeNumOfDevices(virConnectPtr conn, const char *cap,
> unsigned int flags)
>   *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST
>   *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS
>   *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC
> + *   VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM
>   *
>   * Returns the number of node devices found or -1 and sets @devices to NULL
>   in
>   * case of error.  On success, the array stored into @devices is guaranteed
>   to
> diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
> index 9ede96886..c69144021 100644
> --- a/tools/virsh-nodedev.c
> +++ b/tools/virsh-nodedev.c
> @@ -414,7 +414,7 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd
> ATTRIBUTE_UNUSED)
>              goto cleanup;
>          }
>  
> -        switch (cap_type) {
> +        switch ((virNodeDevCapType) cap_type) {
>          case VIR_NODE_DEV_CAP_SYSTEM:
>              flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_SYSTEM;
>              break;
> @@ -451,7 +451,10 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd
> ATTRIBUTE_UNUSED)
>          case VIR_NODE_DEV_CAP_SCSI_GENERIC:
>              flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC;
>              break;
> -        default:
> +        case VIR_NODE_DEV_CAP_DRM:
> +            flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM;
> +            break;
> +        case VIR_NODE_DEV_CAP_LAST:
>              break;
>          }
>      }
> diff --git a/tools/virsh.pod b/tools/virsh.pod
> index a47040984..90f4b5a1f 100644
> --- a/tools/virsh.pod
> +++ b/tools/virsh.pod
> @@ -3072,9 +3072,9 @@ List all of the devices available on the node that are
> known by libvirt.
>  I<cap> is used to filter the list by capability types, the types must be
>  separated by comma, e.g. --cap pci,scsi, valid capability types include
>  'system', 'pci', 'usb_device', 'usb', 'net', 'scsi_host', 'scsi_target',
> -'scsi', 'storage', 'fc_host', 'vports', 'scsi_generic'. If I<--tree> is
> -used, the output is formatted in a tree representing parents of each node.
> -I<cap> and I<--tree> are mutually exclusive.
> +'scsi', 'storage', 'fc_host', 'vports', 'scsi_generic', 'drm'.If I<--tree>
> +is used, the output is formatted in a tree representing parents of each
> +node.  I<cap> and I<--tree> are mutually exclusive.
>  
>  =item B<nodedev-reattach> I<nodedev>
>  
> --
> 2.11.0
> 
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list