Logo

Linux 内核

6.16.0-rc4

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动程序 API
  • 子系统
    • 核心子系统
    • 人机接口
    • 网络接口
      • 网络
      • 网络标签
      • InfiniBand
      • ISDN
      • MHI
    • 存储接口
    • 其他子系统
  • 锁定
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • 修改指南
  • 跟踪
  • 故障注入
  • 热补丁
  • Rust
  • 管理
  • 构建系统
  • 报告问题
  • 用户空间工具
  • 用户空间 API
  • 固件
  • 固件和设备树
  • CPU 架构
  • 未分类文档
  • 翻译

本页

  • 显示源

Devlink 信息¶

devlink-info 机制使设备驱动程序能够以标准、可扩展的方式报告设备(硬件和固件)信息。

devlink-info API 的最初动机有两方面:

  • 使在设备群中以与供应商无关的方式自动化设备和固件管理成为可能(另请参见 Documentation/networking/devlink/devlink-flash.rst);

  • 命名每个组件的固件版本(与拥挤的 ethtool 版本字符串不同)。

devlink-info 支持报告多种类型的对象。通常不鼓励在此处以及通过任何其他 Linux API 报告驱动程序版本。

顶级信息对象列表¶

名称

描述

driver

当前使用的设备驱动程序名称,也可通过 sysfs 获取。

serial_number

设备的序列号。

这通常是 ASIC 的序列号,也常在设备的 PCI 配置空间中的 Device Serial Number 能力中可用。

序列号应在每个物理设备上是唯一的。有时设备的序列号只有 48 位长(以太网 MAC 地址的长度),由于 PCI DSN 为 64 位长,设备会将额外信息填充或编码到序列号中。一个例子是在额外的两个字节中添加端口 ID 或 PCI 接口 ID。驱动程序应确保剥离或标准化任何此类填充或接口 ID,并且只报告唯一标识硬件的序列号部分。换句话说,同一设备的两个端口或多主机设备的两个主机上报告的序列号应相同。

board.serial_number

设备的板序列号。

这通常是电路板的序列号,常在 PCI 重要产品数据中可用。

fixed

用于硬件标识符以及不可现场更新的组件版本的组。

此部分中的版本标识设备设计。例如,组件标识符或 PCI VPD 中报告的板版本。devlink-info 中的数据应分解为最小的逻辑组件,例如,PCI VPD 可能会连接各种信息以形成部件号字符串,而在 devlink-info 中,所有部分都应作为单独的项目报告。

此组不得包含任何频繁更改的标识符,例如序列号。请参阅 Documentation/networking/devlink/devlink-flash.rst 以了解原因。

running

用于当前运行的软件/固件信息的组。这些版本通常仅在重启后(有时是设备复位后)才更新。

stored

用于设备闪存中软件/固件版本的组。

即使尚未重启,存储的值也必须更新以反映闪存中的更改。如果设备在刷写新软件时无法更新 stored 版本,则不得报告它们。

每个版本在每个版本组中最多只能报告一次。如果设备能够报告 stored 版本(参见 Documentation/networking/devlink/devlink-flash.rst),则存储在闪存中的固件组件应同时出现在 running 和 stored 部分。如果软件/固件组件是从磁盘加载的(例如 /lib/firmware),则只能通过内核 API 报告运行版本。

请注意,通过 devlink 报告的任何安全版本纯粹是信息性的。Devlink 不使用安全通道与设备通信。

通用版本¶

期望驱动程序使用以下通用名称来导出版本信息。如果给定组件的通用名称尚不存在,驱动程序作者应参考现有的特定于驱动程序的版本并尝试重用。作为最后手段,如果某个组件确实是唯一的,则允许使用特定于驱动程序的名称,但这些名称应在特定于驱动程序的文件中进行记录。

所有版本都应尝试使用以下术语:

常用版本后缀列表¶

名称

描述

id, revision

设计和修订的标识符,主要用于硬件版本。

api

组件之间 API 的版本。API 项对用户通常价值有限,且供应商可以从其他版本推断出来,因此通常不鼓励添加 API 版本以避免冗余。

bundle_id

刷入设备的分发包标识符。这是固件包的一个属性,该固件包包含多个版本,以便于管理固件映像(参见 Documentation/networking/devlink/devlink-flash.rst)。

bundle_id 可以出现在 running 和 stored 版本中,但如果 bundle_id 覆盖的任何组件已更改且不再与捆绑包中的版本匹配,则不得报告它。

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() 宏列出可能需要加载到设备上的固件文件名。然而,这些是按模块而非按设备列出的。列出驱动程序将尝试按优先级为给定设备加载的固件文件名称会很有用。

©内核开发社区。| 由 Sphinx 5.3.0 和 Alabaster 0.7.16 提供技术支持 | 页面源文件