ACPI 表¶
ACPI 是“高階配置和電源介面”,它是一個標準,定義了平臺和作業系統如何管理電源和配置計算機硬體。 就本操作理論而言,當我們提到“ACPI”時,通常指的是“ACPI 表”——平臺(BIOS/EFI)透過它向作業系統傳遞靜態配置資訊。
以下 ACPI 表包含關於 CXL 裝置的靜態配置和效能資料。
SRAT 表還可以包含通用埠/啟動器內容,這些內容旨在描述通用埠,但不包含有關到端點的路徑其餘部分的資訊。
Linux 使用這些表為靜態配置(由 BIOS/EFI)的 CXL 裝置配置核心資源,例如
NUMA 節點
記憶體層
NUMA 抽象距離
SystemRAM 記憶體區域
加權交錯節點權重
ACPI 除錯¶
acpidump -b 命令將 ACPI 錶轉儲為二進位制格式。
iasl -d 命令將檔案反彙編為人類可讀的格式。
示例 acpidump -b && iasl -d cedt.dat
[000h 0000 4] Signature : "CEDT" [CXL Early Discovery Table]
常見問題¶
此處描述的大多數故障會導致驅動程式無法將記憶體作為 DAX 裝置和/或 kmem 展示。
CEDT CFMWS 目標列表 UID 與 CEDT CHBS UID 不匹配。
CEDT CFMWS 目標列表 UID 與 DSDT CXL 主橋 UID 不匹配。
CEDT CFMWS 限制位不正確。
CEDT CFMWS 記憶體區域對齊不佳。
CEDT CFMWS 記憶體區域跨越平臺記憶體空洞。
CEDT CHBS UID 與 DSDT CXL 主橋 UID 不匹配。
CEDT CHBS 規範版本不正確。
SRAT 缺少 CEDT CFMWS 中描述的區域。
結果:無法為該區域建立 NUMA 節點,或者該區域放置在錯誤的節點中。
HMAT 缺少 CEDT CFMWS 中描述的區域的資料。
結果:NUMA 節點放置在錯誤的記憶體層中。
SLIT 具有錯誤的資料。
結果:核心中的許多效能機制將非常不高興。
所有這些問題都會向用戶顯示,就好像驅動程式無法支援 CXL 一樣 - 但實際上,它們都是平臺未能正確配置 ACPI 表的故障。