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

fra*_*one 4 cpu memory encryption amd

最近的 AMD CPU 具有名为Secure Memory Encryption SME 的功能,如果可用,可以通过将此参数添加到 linux 的命令行来显式启用该功能。

mem_encrypt=on
Run Code Online (Sandbox Code Playgroud)

(根据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
Run Code Online (Sandbox Code Playgroud)

它向我展示了这个输出

00000000: 00000000 00000000 11110100 00000000 00000000 00000000  ......
00000006: 00000000 00000000
Run Code Online (Sandbox Code Playgroud)

根据引用的来源,第 23 位表示 SME 是否确实启用/活动 (=1) 或不启用 (=0)。

如果以上确实是测试这一点的正确方法,则确认可能被视为有效答案,当然最好提供一些背景。另外,我很高兴能够在正在运行的 linux 系统上检查 SME 的状态。

Ste*_*itt 5

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

您还应该在内核引导日志中看到相应的消息

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

如果中小企业活跃,

启用 AMD 内存加密功能:SEV SEV-ES

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

另请参阅/proc/cpuinfo 中的标志是什么意思?