较新的 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 处于活动状态。