Devlink 信息¶
devlink-info
机制使设备驱动程序能够以标准、可扩展的方式报告设备(硬件和固件)信息。
devlink-info
API 最初的动机有两个:
使以供应商无关的方式在机器集群中自动化设备和固件管理成为可能(另请参阅 Documentation/networking/devlink/devlink-flash.rst);
命名每个组件的固件版本(而不是拥挤的 ethtool 版本字符串)。
devlink-info
支持报告多种类型的对象。通常不鼓励报告驱动程序版本 - 在这里,以及通过任何其他 Linux API。
名称 |
描述 |
|
当前使用的设备驱动程序的名称,也可以通过 sysfs 获取。 |
|
设备的序列号。 这通常是 ASIC 的序列号,也通常在设备的 PCI 配置空间的设备序列号功能中可用。 每个物理设备的序列号应该是唯一的。有时设备的序列号只有 48 位长(以太网 MAC 地址的长度),并且由于 PCI DSN 长 64 位,设备会填充或编码附加信息到序列号中。一个例子是在额外的两个字节中添加端口 ID 或 PCI 接口 ID。驱动程序应确保剥离或标准化任何此类填充或接口 ID,并且只报告唯一标识硬件的序列号部分。换句话说,同一设备的两个端口或多主机设备上的两个主机报告的序列号应该相同。 |
|
设备的电路板序列号。 这通常是电路板的序列号,通常在 PCI 重要产品数据中可用。 |
|
用于硬件标识符和不可现场更新的组件版本的组。 此部分中的版本标识设备设计。例如,组件标识符或 PCI VPD 中报告的电路板版本。 此组不得包含任何频繁更改的标识符,例如序列号。请参阅 Documentation/networking/devlink/devlink-flash.rst 以了解原因。 |
|
用于有关当前运行的软件/固件的信息的组。这些版本通常只在重新启动后更新,有时会重置设备。 |
|
用于设备闪存中软件/固件版本的组。 存储的值必须更新以反映闪存中的更改,即使尚未发生重新启动。如果设备无法在刷新新软件时更新 |
每个版本在每个版本组中最多报告一次。如果设备能够报告 stored
版本(请参阅 Documentation/networking/devlink/devlink-flash.rst),则存储在闪存中的固件组件应在 running
和 stored
部分中都出现。如果软件/固件组件是从磁盘加载的(例如,/lib/firmware
),则只能通过内核 API 报告运行版本。
通用版本¶
期望驱动程序使用以下通用名称来导出版本信息。如果给定组件的通用名称尚不存在,驱动程序作者应参考现有的驱动程序特定版本并尝试重用。作为最后手段,如果组件确实是唯一的,则允许使用驱动程序特定名称,但这些名称应在驱动程序特定文件中记录。
所有版本都应尝试使用以下术语:
名称 |
描述 |
|
设计和修订的标识符,主要用于硬件版本。 |
|
组件之间的 API 版本。API 项目通常对用户的价值有限,并且可以由供应商从其他版本中推断出来,因此通常不鼓励添加 API 版本作为噪声。 |
|
已刷入设备的发行包的标识符。这是固件包的一个属性,涵盖多个版本,以便于管理固件映像(请参阅 Documentation/networking/devlink/devlink-flash.rst)。
|
board.id¶
电路板设计的唯一标识符。
board.rev¶
电路板设计修订版。
asic.id¶
ASIC 设计标识符。
asic.rev¶
ASIC 设计修订/步进。
board.manufacture¶
生产该部件的公司或设施的标识符。
board.part_number¶
电路板及其组件的部件号。
fw¶
整体固件版本,通常表示 fw.mgmt、fw.app 等的集合。
fw.mgmt¶
控制单元固件版本。此固件负责管理任务、PHY 控制等,但不负责逐包数据路径操作。
fw.mgmt.api¶
驱动程序和固件之间软件接口的固件接口规范版本。
fw.app¶
控制高速数据包处理的数据路径微代码。
fw.undi¶
UNDI 软件,可能包括 UEFI 驱动程序、固件或两者。
fw.ncsi¶
负责支持/处理网络控制器侧带接口的软件版本。
fw.psid¶
固件参数集的唯一标识符。这些通常是在制造时定义的特定电路板的参数。
fw.roce¶
负责处理 roce 管理的 RoCE 固件版本。
fw.bundle_id¶
整个固件包的唯一标识符。
fw.bootloader¶
引导加载程序的版本。
未来工作¶
以下扩展可能有用:
磁盘固件文件名 - 驱动程序通过
MODULE_FIRMWARE()
宏列出它们可能需要加载到设备上的固件文件名。但是,这些是按模块而不是按设备列出的。列出驱动程序将尝试为给定设备加载的固件文件的名称(按优先级顺序排列)会很有用。