// Module included in the following assemblies:
//
// microshift_configuring/microshift-gdp.adoc

:_mod-docs-content-type: REFERENCE
[id="microshift-generic-device-plugin-configuration-parameters_{context}"]
= Generic Device Plugin configuration reference

[role="_abstract"]
The Generic Device Plugin configuration reference lists and describes the parameters in the `genericDevicePlugin` section of the` config.yaml` file in {product-title}. You can use this reference when you enable the GDP and define which host devices to expose.

.GDP configuration fields definitions table
[cols="1,2"]
|===
|Parameter|Description

|`genericDevicePlugin`
|The `genericDevicePlugin` section of the {microshift-short} configuration file defines the configurable parameters for the implementation of the {microshift-short} `GenericDevicePlugin` API. All of the following parameters in this table are subsections in the `genericDevicePlugin` section of the {microshift-short} configuration.

|`devices`
|Is a subgroup that lists the device definitions to be exposed by the plugin. Each `Device` entry contains a 'name' and a list of `groups`.

|`devices.groups`
|Lists device groups. Devices within a group comprise a pool of devices under a common name. When you request a device from that pool, you can receive a device from different defined paths.

|`devices.groups.count`
|Specifies how many times this group of devices can be mounted concurrently. If unspecified, `Count` defaults to `1`. Setting a high count, for example, `1000` for `/dev/fuse`, is possible because are no inherent limits, but performance might be impacted depending on the host's capabilities and the nature of the device.

|`devices.groups.paths`
|Lists the host device file paths. Paths can be glob patterns, for example, `/dev/ttyUSB*`, in which case each matched device is schedulable `Count` times. This field is exclusive with `usbs`; you cannot define both in the same device group.

|`devices.groups.paths.limit`
|Specifies up to how many times this device can be used in the group concurrently when other devices in the group yield more matches. For example, if one path in the group matches 5 devices and another matches 1 device but has a limit of 10, then the group provides 5 pairs of devices. When unspecified, the limit defaults to `1`.

|`devices.groups.paths.mountPath`
|The file path at which the host device should be mounted within the container. When unspecified, `mountPath` defaults to `path`.

|`devices.groups.paths.path`
|The file path of a device on the host, for example, `/dev/video0`, `/dev/ttyUSB*`.

|`devices.groups.paths.permissions`
|The file-system permissions given to the mounted device. Applies only to mounts of type `Device`. Can be one or more of:

* `r` - allows the container to read from the specified device.

* `w` - allows the container to write to the specified device.

* `m` - allows the container to create device files that do not yet exist.

When unspecified, `Permissions` defaults to `mrw`.

|`devices.groups.paths.readOnly`
|Specifies whether the path should be mounted read-only. The values are `true` or `false`. Applies only to mounts of type `Mount`.

|`devices.groups.path.type`
|Describes what type of file-system node this `path` represents and thus how it should be mounted. The type can be `Device` or `Mount`. When unspecified, `type` defaults to `Device`.

|`devices.groups.usbs`
|Lists the USB specifications that this device group consists of. The vendor and product IDs must always match. The serial ID must match if provided, or skipped if the ID is empty, The `usbs` field is exclusive with `paths`.

|`devices.groups.usbs.product`
|The USB Product ID of the device to match on, for example, `0x7523`.

|`devices.groups.usbs.serial`
|The serial number of the device to match on. A USB device must match exactly on all the given attributes to pass.

|`devices.groups.usbs.vendor`
|The USB Vendor ID of the device to match on, for example, `0x1a86`

|`devices.name`
|A unique string representing the kind of device this specification describes, for example, `serial`, `video`, or `fuse`. This name is used in pod resource requests, for example, `device.microshift.io/serial`.

|`domain`
|`domain` is a subgroup that specifies the domain prefix with which devices are advertised and present in the node. For example, `device.microshift.io/serial`. The default value is `device.microshift.io`.

|`status`
|`status` is a subgroup that specifies the default GDP status. `Enabled` or `Disabled` are valid values.

|===