Logo

Linux 内核

6.13.0-rc6

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动程序 API
  • 子系统
    • 核心子系统
    • 人机接口
    • 网络接口
      • 网络
      • NetLabel
      • 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 配置空间的设备序列号功能中可用。

每个物理设备的序列号应该是唯一的。有时设备的序列号只有 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 报告运行版本。

通用版本¶

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

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

常用版本后缀列表¶

名称

描述

id, revision

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

api

组件之间的 API 版本。API 项目通常对用户的价值有限,并且可以由供应商从其他版本中推断出来,因此通常不鼓励添加 API 版本作为噪声。

bundle_id

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

bundle_id 可以同时出现在 running 和 stored 版本中,但是如果 bundle_id 涵盖的任何组件已更改并且不再与包中的版本匹配,则不得报告该 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 提供技术支持 | 页面源代码