Devlink 資訊¶
devlink-info 機制使裝置驅動程式能夠以標準、可擴充套件的方式報告裝置(硬體和韌體)資訊。
devlink-info API 的最初動機有兩方面:
使在裝置群中以與供應商無關的方式自動化裝置和韌體管理成為可能(另請參見 Documentation/networking/devlink/devlink-flash.rst);
命名每個元件的韌體版本(與擁擠的 ethtool 版本字串不同)。
devlink-info 支援報告多種型別的物件。通常不鼓勵在此處以及透過任何其他 Linux API 報告驅動程式版本。
名稱 |
描述 |
|
當前使用的裝置驅動程式名稱,也可透過 sysfs 獲取。 |
|
裝置的序列號。 這通常是 ASIC 的序列號,也常在裝置的 PCI 配置空間中的 Device Serial Number 能力中可用。 序列號應在每個物理裝置上是唯一的。有時裝置的序列號只有 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 報告執行版本。
請注意,透過 devlink 報告的任何安全版本純粹是資訊性的。Devlink 不使用安全通道與裝置通訊。
通用版本¶
期望驅動程式使用以下通用名稱來匯出版本資訊。如果給定元件的通用名稱尚不存在,驅動程式作者應參考現有的特定於驅動程式的版本並嘗試重用。作為最後手段,如果某個元件確實是唯一的,則允許使用特定於驅動程式的名稱,但這些名稱應在特定於驅動程式的檔案中進行記錄。
所有版本都應嘗試使用以下術語:
名稱 |
描述 |
|
設計和修訂的識別符號,主要用於硬體版本。 |
|
元件之間 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()宏列出可能需要載入到裝置上的韌體檔名。然而,這些是按模組而非按裝置列出的。列出驅動程式將嘗試按優先順序為給定裝置載入的韌體檔名稱會很有用。