为什么初始化 AMD-Vi 会出现错误?

为什么初始化 AMD-Vi 会出现错误?

我有一块 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/Au​​ra。我已完成: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 也类似。祝你好运!

相关内容