[libvirt] [PATCH] nodedev: Introduce new drm cap
Marc-André Lureau
mlureau at redhat.com
Fri Feb 17 15:25:07 UTC 2017
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 at redhat.com>
looks good,
Reviewed-by: Marc-André Lureau <marcandre.lureau at 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
>
>
More information about the libvir-list
mailing list