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 的状态。
如果支持 SME(CPUID
显示相应的位设置)并启用(设置了相应的 MSR 位),/proc/cpuinfo
则将包含该sme
标志。您可以通过查看检测 SME 的内核代码来验证这一点:/proc/cpuinfo
如果 SME 未完全启用,则直接反映在 中的 SME 功能将被清除。
AMD 内存加密功能已启用:SME
如果中小企业活跃,
启用 AMD 内存加密功能:SEV SEV-ES
如果 SEV 和/或 SEV-ES 处于活动状态。