如何知道 AMD cpu 的 SME 功能是否啟用?
最近的 AMD CPU 有一個名為Secure Memory Encryption SME的功能,如果可用,可以通過將此參數添加到 linux 的命令行來顯式啟用該功能。
mem_encrypt=on
(根據https://libvirt.org/kbase/launch_security_sev.html)
我不確定我的系統(帶有 AMD EPYC 處理器)是否啟用了此功能(即該功能是否可能是預設的)。
我的問題是如何檢查 AMD SME 功能是否啟用?
由於https://www.kernel.org/doc/html/latest/x86/amd-memory-encryption.html建議:
如果存在對 SME 的支持,則可以使用 MSR 0xc00100010 (MSR_K8_SYSCFG) 來確定是否啟用了 SME 和/或啟用記憶體加密:
我已經執行了這個命令(在 debian 10 上):
apt-get install msr-tools rdmsr --raw 0xc0010010 | xxd -b
這給了我這個輸出
00000000: 00000000 00000000 11110100 00000000 00000000 00000000 ...... 00000006: 00000000 00000000
根據引用的來源,第 23 位指示 SME 是否確實啟用/啟動 (=1) 或不 (=0)。
如果以上確實是測試此問題的正確方法,則可以將確認視為有效答案,當然最好提供一些背景知識。否則,我很高興能夠在正在執行的 linux 系統上檢查 SME 的狀態。
如果支持 SME(
CPUID
顯示相應的位設置)並啟用(設置了相應的 MSR 位),/proc/cpuinfo
將包含該sme
標誌。您可以通過查看檢測 SME 的核心程式碼/proc/cpuinfo
來驗證這一點:如果 SME 未完全啟用,則直接反映在 中的 SME 功能將被清除。您還應該在核心啟動日誌中看到相應的消息:
AMD 記憶體加密功能啟動:SME
如果中小企業是活躍的,
AMD 記憶體加密功能啟動:SEV SEV-ES
如果 SEV 和/或 SEV-ES 處於活動狀態。