From 9a202d80f7b60fcf6caf059570bfd2d0b0cbe8a4 Mon Sep 17 00:00:00 2001
Message-Id: <9a202d80f7b60fcf6caf059570bfd2d0b0cbe8a4@dist-git>
From: Erik Skultety
@@ -75,6 +75,7 @@
storage
(Since 1.0.4),
scsi_generic
(Since 1.0.7),
drm
(Since 3.1.0), and
+ mdev
(Since 3.4.0).
This element can be nested in which case it further specifies a
device's capability. Refer to specific device types to see more values
for the type
attribute which are exclusive.
@@ -185,5 +186,170 @@
...
<device>
+
+ A PCI device capable of creating mediated devices will include a nested
+ capability mdev_types
which enumerates all supported mdev
+ types on the physical device, along with the type attributes available
+ through sysfs:
+
type
id
which holds
+ an official vendor-supplied identifier for the type.
+ Since 3.4.0
+ name
name
element holds a vendor-supplied code name for
+ the given mediated device type. This is an optional element.
+ Since 3.4.0
+ deviceAPI
availableInstances
+ For a more info about mediated devices, refer to the + paragraph below. +
+ ++<device> +... + <driver> + <name>nvidia</name> + </driver> + <capability type='pci'> +... + <capability type='mdev_types'> + <type id='nvidia-11'> + <name>GRID M60-0B</name> + <deviceAPI>vfio-pci</deviceAPI> + <availableInstances>16</availableInstances> + </type> + <!-- Here would come the rest of the available mdev types --> + </capability> +... + </capability> +</device>+ +
+ Mediated devices (Since 3.2.0) are software + devices defining resource allocation on the backing physical device which + in turn allows the parent physical device's resources to be divided into + several mediated devices, thus sharing the physical device's performance + among multiple guests. Unlike SR-IOV however, where a PCIe device appears + as multiple separate PCIe devices on the host's PCI bus, mediated devices + only appear on the mdev virtual bus. Therefore, no detach/reattach + procedure from/to the host driver procedure is involved even though + mediated devices are used in a direct device assignment manner. +
+ +
+ The following sub-elements and attributes are exposed within the
+ capability
element:
+
type
id
which holds
+ an official vendor-supplied identifier for the type.
+ Since 3.4.0
+ iommuGroup
number
which holds
+ the IOMMU group number the mediated device belongs to.
+ Since 3.4.0
+ +<device> + <name>mdev_4b20d080_1b54_4048_85b3_a6a62d165c01</name> + <path>/sys/devices/pci0000:00/0000:00:02.0/4b20d080-1b54-4048-85b3-a6a62d165c01</path> + <parent>pci_0000_06_00_0</parent> + <driver> + <name>vfio_mdev</name> + </driver> + <capability type='mdev'> + <type id='nvidia-11'/> + <iommuGroup number='12'/> + <capability/> +<device/>+ +
+ The support of mediated device's framework in libvirt's node device driver + covers the following features: +
+ ++ Because mediated devices are instantiated from vendor specific templates, + simply called 'types', information describing these types is contained + within the parent device's capabilities + (see the example in PCI host devices). +
+ ++ To see the supported mediated device types on a specific physical device + use the following: +
+ ++$ ls /sys/class/mdev_bus/<device>/mdev_supported_types+ +
+ To manually instantiate a mediated device, use one of the following as a + reference: +
+ ++$ uuidgen > /sys/class/mdev_bus/<device>/mdev_supported_types/<type>/create +... +$ echo <UUID> > /sys/class/mdev_bus/<device>/mdev_supported_types/<type>/create+ +
+ Manual removal of a mediated device is then performed as follows: +
+ ++$ echo 1 > /sys/bus/mdev/devices/<uuid>/remove+