我在 XEN 中使用 PCI 直通时遇到了问题。
内核:4.15.0-23-generic CPU:Intel Core i7 - 在英特尔网站上看到规格:它支持 VT-d、VT-x 和所有其他技术!
检查 XEN 是否准备好 IOMMU / VT-d / VT-x:
xl dmesg | grep -i hvm
输出:
(XEN) HVM: ASIDs enabled.
(XEN) HVM: VMX enabled
(XEN) HVM: Hardware Assisted Paging (HAP) detected
(XEN) HVM: HAP page sizes: 4kB, 2MB
检查IOMMU:
(XEN) Enabling APIC mode: Flat. Using 1 I/O APICs
(XEN) I/O virtualisation enabled
因此,我开始了(通过 PCI USB 控制器,其中 xx:yy.z 是 lspci 的 ID):
# modprobe xen-pciback
# xl pci-assignable-add xx:yy.z
检查设备是否已准备好通过:
sudo xl pci-assignable-list
它显示:0000:xx:yy.z,所以我很高兴我的设备已准备就绪。然后:
sudo nano /etc/xen/ubuntu.hvm
我编辑配置并添加以下行:
pci = ['0000:xx:yy.z']
然后开始:
sudo xl create /etc/xen/ubuntu.hvm
我看到错误:
Parsing config from /etc/xen/ubuntu.hvm
libxl: error: libxl_pci.c:1111:do_pci_add: Domain 2:xc_assign_device failed: Cannot allocate memory
libxl: error: libxl_pci.c:1306:libxl__add_pcidevs: Domain 2:libxl_device_pci_add failed: -3
libxl: error: libxl_create.c:1458:domcreate_attach_devices: Domain 2:unable to add pci devices
libxl: error: libxl_domain.c:1003:libxl__destroy_domid: Domain 2:Non-existant domain
libxl: error: libxl_domain.c:962:domain_destroy_callback: Domain 2:Unable to destroy guest
libxl: error: libxl_domain.c:889:domain_destroy_cb: Domain 2:Destruction of domain failed
有什么想法吗?我在谷歌上搜索,但没有找到我的问题!我的第二台 AMD Ryzen PC 成功通过了 PCI USB,没有任何错误。
答案1
您必须确保 dom0 没有捕获您在启动时尝试传递的 PCI 设备。
确保在/etc/default/grub.d/xen.cfg
在线GRUB_CMDLINE_XEN="pciback.hide=(xx:yy.z)"
跑步update-grub
然后重新启动。