
On Fri, Oct 01, 2021 at 01:11:19PM +0100, Daniel P. Berrangé wrote:
On Mon, Sep 27, 2021 at 10:30:51PM +0300, Dmitrii Shcherbakov wrote:
* XML serialization and deserialization of PCI VPD resources; * PCI VPD capability flags added and used in relevant places; * XML to XML tests for the added capability.
Signed-off-by: Dmitrii Shcherbakov <dmitrii.shcherbakov@canonical.com>
diff --git a/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml b/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml new file mode 100644 index 0000000000..831b6feb24 --- /dev/null +++ b/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml @@ -0,0 +1,33 @@ +<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'> + <resource type='string'>BlueField-2 DPU 25GbE Dual-Port SFP56, Crypto Enabled, 16GB on-board DDR, 1GbE OOB management, Tall Bracket</resource> + <resource type='vpd-r'> + <field keyword='EC'>B1</field> + <field keyword='PN'>MBF2H332A-AEEOT</field> + <field keyword='SN'>MT2113X00000</field> + <field keyword='V0'>PCIeGen4 x8</field> + <field keyword='V2'>MBF2H332A-AEEOT</field> + <field keyword='V3'>3c53d07eec484d8aab34dabd24fe575aa</field> + <field keyword='VA'>MLX:MN=MLNX:CSKU=V2:UUID=V3:PCI=V0:MODL=BF2H332A</field>
I've got a general comment about what do any of these 2-letter keywords actually mean. I presume they are explaned in the PCI spec, but AFAICT the spec is not publically available for free.
So at the very least we need to document each one's meaning in libvirt docs IMHO.
If I had insight into what they meant, then I might also suggest giving them meaningful names in libvirt. These two level codes are presumably chosen for reasons of space efficiency at the low level. This is not a constraint we especially care about in libvirt, where ease of understanding is usually more important.
Ok, I found a copy of the PCI spec I see the data is classified at 2 levels, with the first level being: String Tag: This tag is the first item in the VPD storage component. It contains the name of the add-in card in alphanumeric characters. VPD-R Tag: This tag contains the read only VPD keywords for an add-in card. VPD-W Tag: This tag contains the read/write VPD keywords for an add-in card Then for VPD-R, the next level PN: Add-in Card Part Number EC: Engineering change level of the card FG: Fabric Geography LC: Location MN: Manufacture ID PG: PCI Geography SN: Serial number Vx: Vendor string (Repeated many times for 'x' in range 0-9, A-Z) CP: Extended capability RV: Checksum + reserved space I don't see a need to report the "CP" and "RV" tags in the XML. Then for VPD-W,the next level Vx: Vendor string (Repeated many times for 'x' in range 0-9, A-Z) Sx: System string (Repeated many times for 'x' in range 0-9, B-Z) YA: Asset tag With all this in mind, I think we a better to represent these all as meaingfully named elements <capability type="vpd"> <name>BlueField-2 DPU 25GbE Dual-Port SFP56, Crypto Enabled, 16GB on-board DDR, 1GbE OOB management, Tall Bracket</name> <tags access="readonly"> <change_level>B1</change_level> <part_number>MBF2H332A-AEEOT</part_number> <serial_number>MT2113X00000</serial_number> <vendor_string index="0">PCIeGen4 x8</vendor_string> <vendor_string index="2">MBF2H332A-AEEOT</vendor_string> <vendor_string index="3">3c53d07eec484d8aab34dabd24fe575aa</vendor_string> </tags> <tags access="readwrite"> ... </tags> </capability>
+ <capability type='vpd'> + <resource type='string'>BlueField-2 DPU 25GbE Dual-Port SFP56, Crypto Enabled, 16GB on-board DDR, 1GbE OOB management, Tall Bracket</resource> + <resource type='vpd-r'> + <field keyword='EC'>B1</field> + <field keyword='PN'>MBF2H332A-AEEOT</field> + <field keyword='SN'>MT2113X00000</field> + <field keyword='V0'>PCIeGen4 x8</field> + <field keyword='V2'>MBF2H332A-AEEOT</field> + <field keyword='V3'>3c53d07eec484d8aab34dabd24fe575aa</field>
Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|