我有一块 Ryzen 5 1600x CPU 和一块 MSI X370 Gaming Pro Carbon 主板,它 100% 支持 I/O 虚拟化。当我在不使用 Xen 的情况下在 Ubuntu 中启动时,我可以看到:
me:~$ dmesg | grep IOMMU
[ 1.074675] AMD-Vi: IOMMU performance counters supported
[ 1.076696] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[ 1.078029] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[ 1.352681] AMD IOMMUv2 driver by Joerg Roedel <[email protected]>
me:~$ dmesg | grep AMD-V
[ 1.074675] AMD-Vi: IOMMU performance counters supported
[ 1.076696] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[ 1.076697] AMD-Vi: Extended features (0xf77ef22294ada):
[ 1.076699] AMD-Vi: Interrupt remapping enabled
[ 1.076700] AMD-Vi: virtual APIC enabled
[ 1.076801] AMD-Vi: Lazy IO/TLB flushing enabled
然而,当我启动 Xen 时,我看到
.....
(XEN) Detected 3600.165 MHz processor.
(XEN) Initing memory sharing.
(XEN) AMD-Vi: Error initialization
(XEN) I/O virtualisation disabled
(XEN) ENABLING IO-APIC IRQs
(XEN) -> Using new ACK method
(XEN) Platform timer is 14.318MHz HPET
(XEN) Allocated console ring of 32 KiB.
(XEN) HVM: ASIDs enabled.
(XEN) SVM: Supported advanced features:
(XEN) - Nested Page Tables (NPT)
(XEN) - Last Branch Record (LBR) Virtualisation
(XEN) - Next-RIP Saved on #VMEXIT
(XEN) - VMCB Clean Bits
(XEN) - DecodeAssists
(XEN) - Pause-Intercept Filter
(XEN) - TSC Rate MSR
(XEN) HVM: SVM enabled
(XEN) HVM: Hardware Assisted Paging (HAP) detected
(XEN) HVM: HAP page sizes: 4kB, 2MB, 1GB
(XEN) Brought up 12 CPUs
.....
有谁能建议去哪里查找 Xen 无法加载 AMD-Vi 的原因吗?
答案1
抱歉,我之前发了不合适的帖子。我也遇到过同样的情况,我的规格:CPU AMD FX8350,主板 Asus 970 Pro Gaming/Aura。我已完成:BIOS 设置 -> CPU 配置 -> 启用 SVM
当我在 Ubuntu 中尝试“lscpu”时:
虚拟化:AMD-v
但是当我在 Xen Hypervisor 中尝试“lscpu”时:
虚拟化:无
事实证明这是完全正常的:
请注意,Linux dom0 内核在“/proc/cpuinfo”中看不到“vmx”或“svm”CPU 标志,因为 Xen虚拟机管理程序(xen.gz) 正在使用硬件虚拟化功能并隐藏来自 dom0 的标志!Xen dom0 实际上是一台虚拟机,因此它看不到所有 CPU 标志,因为 Xen 虚拟机管理程序隐藏了来自 dom0 的一些标志。
来源:https://wiki.xenproject.org/wiki/Xen_Common_Problems
启动 Xen Hypervisor 时要注意这个命令:“xl dmesg”
如果它返回“SVM enabled”和“IOMMU enabled”则表示您的机器完全支持虚拟化。
如果您缺少其中任何一个,请启动到 BIOS 设置:
对于 SVM:高级 -> CPU 配置 -> SVM 启用。
对于 IOMMU:高级 -> 北桥配置 -> IOMMU 启用。
我认为英特尔 CPU 也类似。祝你好运!