Logo

Linux核心

6.16.0-rc4

快速搜尋

目錄

  • 開發流程
  • 提交補丁
  • 行為準則
  • 維護者手冊
  • 所有開發流程文件
  • 核心 API
  • 驅動程式 API
  • 子系統
    • 核心子系統
    • 人機介面
    • 網路介面
      • 網路
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • 儲存介面
    • 其他子系統
  • 鎖
  • 許可規則
  • 編寫文件
  • 開發工具
  • 測試指南
  • Hacking 指南
  • 跟蹤
  • 故障注入
  • Livepatching
  • Rust
  • 管理
  • 構建系統
  • 報告問題
  • 使用者空間工具
  • 使用者空間 API
  • 韌體
  • 韌體和裝置樹
  • CPU 架構
  • 未排序的文件
  • 翻譯

本頁

  • 顯示原始碼

Devlink Region¶

devlink 區域允許使用 devlink 訪問驅動程式定義的地址區域。

每個裝置都可以建立和註冊其自身支援的地址區域。然後可以透過 devlink 區域介面訪問該區域。

區域快照由驅動程式收集,並且可以透過讀取或轉儲命令訪問。這允許對建立的快照進行未來分析。區域可以選擇支援按需觸發快照。

快照識別符號的範圍限定為 devlink 例項,而不是區域。devlink 例項中具有相同快照 ID 的所有快照都對應於同一事件。

建立區域的主要好處是提供對內部地址區域的訪問,否則使用者無法訪問。

區域也可以用於提供一種額外的除錯複雜錯誤狀態的方法,但也可以參考 Devlink Health

區域可以選擇支援透過 DEVLINK_CMD_REGION_NEW netlink 訊息按需捕獲快照。希望允許請求快照的驅動程式必須在其 devlink_region_ops 結構中為該區域實現 .snapshot 回撥。如果快照 ID 未在 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

由於區域很可能非常特定於裝置或驅動程式,因此沒有定義通用區域。有關驅動程式支援的特定區域的資訊,請參閱特定於驅動程式的文件檔案。

©核心開發社群。 | 由 Sphinx 5.3.0 & Alabaster 0.7.16 驅動 | 頁面原始碼