如果 KVM 正在运行,为什么 VMX 显示为已禁用?

如果 KVM 正在运行,为什么 VMX 显示为已禁用?

我在 BIOS 中启用了 VT-x。我正在运行 qemu/kvm/Manjaro。lscpu

$ lscpu
Architecture:            x86_64
  Model name:            Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
Flags: ... vmx ... 
Virtualization features:
  Virtualization:        VT-x
Vulnerabilities:         
  Itlb multihit:         KVM: Mitigation: VMX disabled

此外,

$ sudo rdmsr -f 2:0 0x3A
5

意思就是

  • VMX 配置已锁定
  • VMX 在 SMX(“安全模式扩展”)状态下被禁用
  • VMX 在 SMX 状态之外启用

这个答案给了我希望:如果kvm加载,则 VMX 正在运行。事实上,qemukvm的加速器运行良好(或至少看起来如此)。那么为什么它会显示 VMX 因多重攻击漏洞而被禁用?

运行示例qemu

$ qemu-system-x86_64 -nographic -vga none -net none -nodefaults -machine q35 -accel kvm -cpu host -smp sockets=1,dies=1,cores=2,threads=2 -m 512M ...

QEMU 6.0.0 monitor - type 'help' for more information
(qemu) info kvm
info kvm
kvm support: enabled

到目前为止,客户机(在本例中为 pfSense)运行良好。

答案1

谢谢你的提问...这对我来说也很有趣...所以,读完这篇文章后,https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/multihit.html 情况变得清晰:vmx 看起来存在并且未被 bios 禁用。存在漏洞,但现在 vmx 未被使用,因此只是被禁用。当运行某些 kvm 并使用 vmx 时,情况发生了变化:

 $ cat /sys/devices/system/cpu/vulnerabilities/itlb_multihit 
 KVM: Mitigation: Split huge pages

意思是,该漏洞是存在的,但是可以通过 kvm 拆分页面来缓解。

答案2

简而言之,即使多重攻击漏洞缓解措施可能会暂时禁用 VMX,但系统的 VT-x 仍处于启用状态并正常工作。KVM 和虚拟机的成功运行表明 VT-x 正在按预期用于硬件加速。因此,无需担心报告的多重攻击漏洞导致的 VMX 禁用。

相关内容