我已经在 bios 中启用了 svm 和 iommu,但是 dmesg 显示“不可用”:
# root@xen:~# dmesg |grep -i iommu
[ 0.000000] Command line: placeholder root=UUID=4965005e-54e9-47b9-92ff-04f469927bf8 ro amd_iommu=on iommu=soft iommu=pt iommu=1 quiet
[ 0.000000] Kernel command line: placeholder root=UUID=4965005e-54e9-47b9-92ff-04f469927bf8 ro amd_iommu=on iommu=soft iommu=pt iommu=1 quiet
[ 4.271167] AMD IOMMUv2 driver by Joerg Roedel <[email protected]>
[ 4.271168] AMD IOMMUv2 functionality not available on this system
BIOS设置:
root@xen:~# uname -a
Linux xen 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux
root@xen:~# dmidecode |grep -i product
Product Name: To be filled by O.E.M.
Product Name: GA-970-Gaming SLI-CF
root@xen:~# grep Processor /proc/cpuinfo |tail -1
model name : AMD FX(tm)-8300 Eight-Core Processor
root@xen:~# grep iommu /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=soft iommu=pt iommu=1 quiet"
答案1
http://wiki.xen.org/wiki/VTd_HowTo:
即使芯片组支持 IOMMU,BIOS 也必须有一个 ACPI IVRS 表才能使用它!所以实际支持取决于主板制造商。在撰写本文时,所有主板似乎都有支持 IOMMU 的(测试版)BIOS。
虽然970芯片组本身看起来支持虚拟化,但BIOS也必须支持。另外,我没有发现您的主板被列为已知在这方面工作。
所以,看起来它不支持虚拟化。
我有使用 GA-990FXA-UD3 和 GA-990FXA-UD5 的经验 - 它们都可以很好地运行 kvm。
答案2
看来你已经amd_iommu=on iommu=soft iommu=pt iommu=1 quiet
全部启用了。情况不应该如此。我建议你编辑 grub 并且只启用quiet
,amd_iommu=on
和iommu=pt
。看来你失踪了splash
,但你可能不想要启动画面。
同时启用iommu=pt
(通过模式)和iommu=soft
(软件模式)会导致冲突,因为您只应该使用其中之一。我建议使用iommu=pt
(直通模式),因为它将使用通过主板提供的真实 IOMMU。
如果您希望更正 grub 中的 IOMMU 错误配置,请按照我在另一个线程上的指南进行操作: https://ubuntuforums.org/showthread.php?t=2188370&page=3&p=13620494#post13620494
或阅读以下内容:
编辑 Grub 配置:
sudo nano /etc/default/grub
编辑如下所示的行:
GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=soft iommu=pt iommu=1 quiet"
删除语音标记内的内容并添加"quiet splash amd_iommu=on iommu=pt"
到其中,现在该行看起来像这样:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on iommu=pt"
更新grub:
sudo update-grub
重新启动系统并按 DEL/Delete 键进入 BIOS/EUFI 设置:
确保 IOMMU 已启用、XHCI 切换已启用、EHCI 切换已禁用、USB 传统支持已启用。
操作系统类型我已设置为 Windows8,但我启用了 CSM“兼容性支持模块”,因此 Linux 将通过 BIOS 模拟而不是 UEFI 启动。
保存并退出 BIOS/UEFI 设置。您现在应该可以在 Linux 下正确使用 IOMMU 了。