如果 KVM 正常工作,为什么 VMX 显示为禁用?

Rei*_*ien 5 virtual-machines intel-vt-x kvm-virtualization

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

\n
$ lscpu\nArchitecture:            x86_64\n  Model name:            Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz\nFlags: ... vmx ... \nVirtualization features:\n  Virtualization:        VT-x\nVulnerabilities:         \n  Itlb multihit:         KVM: Mitigation: VMX disabled\n
Run Code Online (Sandbox Code Playgroud)\n

此外,

\n
$ sudo rdmsr -f 2:0 0x3A\n5\n
Run Code Online (Sandbox Code Playgroud)\n

意思就是

\n
    \n
  • VMX 配置已锁定
  • \n
  • VMX 在 SMX (\xe2\x80\x9cSafer Mode Extensions\xe2\x80\x9d) 状态下被禁用
  • \n
  • VMX 在 SMX 状态之外启用
  • \n
\n

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

\n

运行示例qemu

\n
$ 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 ...\n\nQEMU 6.0.0 monitor - type \'help\' for more information\n(qemu) info kvm\ninfo kvm\nkvm support: enabled\n
Run Code Online (Sandbox Code Playgroud)\n

到目前为止,来宾(在本例中为 pfSense)运行良好。

\n

小智 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
Run Code Online (Sandbox Code Playgroud)

也就是说,该漏洞确实存在,但可以通过 kvm 通过拆分页面来缓解。