From fab3513bf0bfb5daae5002215efe2caf88a4e60e Mon Sep 17 00:00:00 2001
From: Dmitrii Shcherbakov
+ A device that exposes a PCI/PCIe VPD capability will include a nested
+ capability
+ The following example shows a VPD representation for a device that exposes the
+ VPD capability with read-only and read-write fields. Among other things,
+ the VPD of this particular device includes a unique board serial number.
+
Mediated devices (Since 3.2.0) are software
diff --git a/docs/formatnode.html.in b/docs/formatnode.html.in
index 3b3c3105d4..5a34a356ce 100644
--- a/docs/formatnode.html.in
+++ b/docs/formatnode.html.in
@@ -162,7 +162,13 @@
This device is capable of creating mediated devices.
The sub-elements are summarized in
mdev_types capability.
-
+
+ VPD capability
+ vpd
which presents data stored in the Vital Product
+ Data (VPD). VPD provides a device name and a number of other standard-defined
+ read-only fields (change level, manufacture id, part number, serial number) and
+ vendor-specific read-only fields. Additionally, if a device supports it,
+ read-write fields (asset tag, vendor-specific fields or system fields) may
+ also be present. The VPD capability is optional for PCI/PCIe devices and the
+ set of exposed fields may vary depending on a device. The XML format follows
+ the binary format described in "I.3. VPD Definitions" in PCI Local Bus (2.2+)
+ and the identical format in PCIe 4.0+. At the time of writing, the support for
+ exposing this capability is only present on Linux-based systems (kernel version
+ v2.6.26 is the first one to expose VPD via sysfs which Libvirt relies on).
+ Reading the VPD contents requires root privileges, therefore,
+ virsh nodedev-dumpxml
must be executed accordingly.
+ A description of the XML format for the vpd
capability can
+ be found here.
+
+<device>
+ <name>pci_0000_42_00_0</name>
+ <capability type='pci'>
+ <class>0x020000</class>
+ <domain>0</domain>
+ <bus>66</bus>
+ <slot>0</slot>
+ <function>0</function>
+ <product id='0xa2d6'>MT42822 BlueField-2 integrated ConnectX-6 Dx network controller</product>
+ <vendor id='0x15b3'>Mellanox Technologies</vendor>
+ <capability type='virt_functions' maxCount='16'/>
+ <capability type='vpd'>
+ <name>BlueField-2 DPU 25GbE Dual-Port SFP56, Crypto Enabled, 16GB on-board DDR, 1GbE OOB management, Tall Bracket</name>
+ <fields access='readonly'>
+ <change_level>B1</change_level>
+ <manufacture_id>foobar</manufacture_id>
+ <part_number>MBF2H332A-AEEOT</part_number>
+ <serial_number>MT2113X00000</serial_number>
+ <vendor_field index='0'>PCIeGen4 x8</vendor_field>
+ <vendor_field index='2'>MBF2H332A-AEEOT</vendor_field>
+ <vendor_field index='3'>3c53d07eec484d8aab34dabd24fe575aa</vendor_field>
+ <vendor_field index='A'>MLX:MN=MLNX:CSKU=V2:UUID=V3:PCI=V0:MODL=BF2H332A</vendor_field>
+ </fields>
+ <fields access='readwrite'>
+ <asset_tag>fooasset</asset_tag>
+ <vendor_field index='0'>vendorfield0</vendor_field>
+ <vendor_field index='2'>vendorfield2</vendor_field>
+ <vendor_field index='A'>vendorfieldA</vendor_field>
+ <system_field index='B'>systemfieldB</system_field>
+ <system_field index='0'>systemfield0</system_field>
+ </fields>
+ </capability>
+ <iommuGroup number='65'>
+ <address domain='0x0000' bus='0x42' slot='0x00' function='0x0'/>
+ </iommuGroup>
+ <numa node='0'/>
+ <pci-express>
+ <link validity='cap' port='0' speed='16' width='8'/>
+ <link validity='sta' speed='8' width='8'/>
+ </pci-express>
+ </capability>
+</device>
+
+
Mediated devices (MDEVs)
vpd
+ PCI devices can expose a VPD capability which
+ is optional per PCI Local Bus 2.2+ and PCIe 4.0+ specifications. If
+ the VPD capability is present, then the parent capability
+ element with the vpd
type will contain a name
+ element (containing a manufacturer-provided device name) and optionally
+ one or two fields
elements with an access
+ attribute set to readonly
or readwrite
.
+
+ The read-only fields
element may contain the following elements:
+
change_level
manufacture_id
part_number
serial_number
vendor_field
index
attribute
+ (since-character upper-case ASCII alphanumeric indexes). Contents will vary
+ depending on a vendor.
+ The read-write fields
element may contain the following elements:
+
asset_tag
vendor_field
index
attribute
+ (since-character upper-case ASCII alphanumeric indexes). Contents will vary depending
+ on a vendor.system_field
index
attribute (since-character
+ upper-case ASCII alphanumeric indexes, except for letter 'A'). May store system-specific
+ data related to a PCI device.
+ The device name and all fields may contain only the following characters:
+ [0-9a-zA-F -_,.:;=]
.
+ The device name may be as large as 65535 bytes while fields are limited with 255 bytes.
+