Devlink 区域¶
devlink
区域允许使用 devlink 访问驱动程序定义的地址区域。
每个设备都可以创建和注册其自己支持的地址区域。然后可以通过 devlink 区域接口访问该区域。
区域快照由驱动程序收集,可以通过读取或转储命令访问。这允许将来对创建的快照进行分析。区域可以选择支持按需触发快照。
快照标识符的作用域限定于 devlink 实例,而不是区域。devlink 实例中具有相同快照 ID 的所有快照都对应于同一事件。
创建区域的主要好处是提供对用户无法访问的内部地址区域的访问。
区域还可以用于提供另一种调试复杂错误状态的方法,但也请参阅 Devlink 健康
区域可以选择支持通过 DEVLINK_CMD_REGION_NEW
netlink 消息按需捕获快照。希望允许请求快照的驱动程序必须在其 devlink_region_ops
结构中为该区域实现 .snapshot
回调。如果未在 DEVLINK_CMD_REGION_NEW
请求中设置快照 ID,则内核将分配一个并向用户空间发送快照信息。
区域可以选择允许直接读取其内容,而无需快照。直接读取请求不是原子的。特别是,大小为 256 字节或更大的读取请求将被拆分为多个块。如果需要原子访问,请使用快照。希望为区域启用此功能的驱动程序应在 devlink_region_ops
结构中实现 .read
回调。用户空间可以通过使用 DEVLINK_ATTR_REGION_DIRECT
属性而不是指定快照 ID 来请求直接读取。
示例用法¶
$ devlink region help
$ devlink region show [ DEV/REGION ]
$ devlink region del DEV/REGION snapshot SNAPSHOT_ID
$ devlink region dump DEV/REGION [ snapshot SNAPSHOT_ID ]
$ devlink region read DEV/REGION [ snapshot SNAPSHOT_ID ] address ADDRESS length LENGTH
# Show all of the exposed regions with region sizes:
$ devlink region show
pci/0000:00:05.0/cr-space: size 1048576 snapshot [1 2] max 8
pci/0000:00:05.0/fw-health: size 64 snapshot [1 2] max 8
# Delete a snapshot using:
$ devlink region del pci/0000:00:05.0/cr-space snapshot 1
# Request an immediate snapshot, if supported by the region
$ devlink region new pci/0000:00:05.0/cr-space
pci/0000:00:05.0/cr-space: snapshot 5
# Dump a snapshot:
$ devlink region dump pci/0000:00:05.0/fw-health snapshot 1
0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30
0000000000000010 0000 0000 ffff ff04 0029 8c00 0028 8cc8
0000000000000020 0016 0bb8 0016 1720 0000 0000 c00f 3ffc
0000000000000030 bada cce5 bada cce5 bada cce5 bada cce5
# Read a specific part of a snapshot:
$ devlink region read pci/0000:00:05.0/fw-health snapshot 1 address 0 length 16
0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30
# Read from the region without a snapshot
$ devlink region read pci/0000:00:05.0/fw-health address 16 length 16
0000000000000010 0000 0000 ffff ff04 0029 8c00 0028 8cc8
由于区域很可能特定于设备或驱动程序,因此未定义通用区域。有关驱动程序支持的特定区域的信息,请参阅特定于驱动程序的文档文件。