如何知道AMD cpu的SME功能是否启用?

如何知道AMD cpu的SME功能是否启用?

较新的 AMD CPU 有一个名为安全内存加密中小企业如果可用,可以通过将此参数添加到 Linux 命令行来显式启用。

mem_encrypt=on

(根据https://libvirt.org/kbase/launch_security_sev.html

我不确定我的系统(配备 AMD EPYC cpu)是否启用了此功能(即该功能是否可能默认启用)。

我的问题是如何检查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 的状态。

答案1

如果支持 SME(CPUID显示相应的位设置)启用(设置适当的 MSR 位),/proc/cpuinfo将包含该sme标志。您可以通过以下方式验证这一点查看检测 SME 的内核代码/proc/cpuinfo:如果 SME 未完全启用,则直接反映在 中的 SME 功能将被清除。

您还应该看到内核启动日志中的相应消息:

AMD 内存加密功能已启用:SME

如果中小企业活跃,

AMD 内存加密功能处于活动状态:SEV SEV-ES

如果 SEV 和/或 SEV-ES 处于活动状态。

也可以看看/proc/cpuinfo 中的标志是什么意思?

相关内容