3
ܓi @ s6 d dl Z d dlZd dlmZmZ G dd deeZdS ) N)PluginIndependentPluginc @ s8 e Zd ZdZdZdZdZdZdd Zd
d Z dd
Z
dS )MellanoxFirmwarez&Nvidia(Mellanox) firmware tools outputZmellanox_firmwarehardwaresystemmstmstflintzMellanox Technologiesc C s$ | j d}|d dko"| j|d kS )z
Checks if this plugin should be executed at all.
We will only enable the plugin if there is a
Mellanox Technologies network adapter
zlspci -D -d 15b3::0200statusr output)exec_cmdMLNX_STRING)selfZlspci r '/usr/lib/python3.6/mellanox_firmware.py
check_enabled s
zMellanoxFirmware.check_enabledc C s | j ds| jd d S | jd}|d dkr2d S | jd}|d dkrLd S | jd | jdd d
| jdd d
tjd}g }x|D ]}d
|kr|j| qW x8|D ]0}| jd| dd d
| jd| dd d
qW | jddd d S )NZallow_system_changesztSkipping mst/mlx cable commands as system changeswould be made. Use --allow-system-changes toenable this collection.zflint --versionr r z mst startz
mst cable addz
mst status -v
)timeout mlxcablesz/dev/mstZcablez
mlxcables -d z --DDMz --dumpzmst stopT)Zchanges)Z
get_optionZ _log_infor collect_cmd_outputoslistdirappend)r
coutr deviceZmlxcabler r r collect# s.
zMellanoxFirmware.collectc C s2 g }| j d}|d dkrd S x*|d j D ]}|j|dd d q,W t|}g }| jd}|d dkrdd gd
dgd
dgd
dgddgg}n.ddgdd gddgddgddgddgddgg}xn|D ]f}x2|D ]*}| j|d d| d|d dd qW x,tdD ] }| jd| tjd qW qW d S )Nzlspci -D -d 15b3::0200r r r
z00.0zflint --versionz
mstconfig -d z -e qzmstflint -d z dcz qz
mstreg -d z --reg_name ROCE_ACCL --getzmstlink -d zmlxdump -d z pcie_uc --allz flint -d z
mlxreg -d zmlxlink -d zfwtrace -d z -i all --tracer_mode FIFO )r zmstdump ) r
splitlinesr setr Zadd_cmd_outputrangetimeZsleep) r
ZdevicesZdevice_listlineZcommandsr r Zcommand_r r r setupC s:
zMellanoxFirmware.setupN)r r )r r )__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr r r r' r r r r r s r )r r$ Zsos.report.pluginsr r r r r r r