我有一个AMD A4-5300 CPU与支持IOMMU的主板,我正在尝试启用IOMMU在我的Gentoo硬化4.3.3-r4内核,意图使用一个图形卡上的KVM。根据这里的导游,我应该用一些提供的选项重新编译我的内核(“对DMA内存设备的支持”、“启用DMA内存设备”和"PCI驱动程序“)。但是,我的内核配置中没有“对DMA内存设备的支持”和“启用DMA内存设备”。
然后,我在配置中搜索"remap“,并尝试启用许多选项,这些选项是CONFIG_IRQ_REMAP、CONFIG_DMAR_TABLE、CONFIG_IOMMU_SUPPORT、CONFIG_SWIOTLB和CONFIG_PCI_IOV。然后,我在启用这些选项的情况下重新编译了我的内核,在内核命令行上用amd_iommu=fullflush iommu=force启动了我的系统,根据上述指南,我在内核消息中查找"AMD-Vi“来检查IOMMU是否在我的系统上运行:
dmesg | grep AMD-Vi我的内核日志上没有任何关于AMD-Vi的东西。
此外,当我试图使用附加的PCI设备在virt管理器上启动VM时,我会收到一条消息:“启动域出错:不支持配置:主机不支持主机PCI设备的传递”。
我发现的几乎所有东西都是针对Fedora、Ubuntu和Debian的,IOMMU在这些地方显然是开箱即用的。我不认为这是我的主板和CPU不支持它的问题,因为我的BIOS有一个选项,而且我还记得几年前我能够在Debian上运行一个带有IOMMU的VirtualBox VM (虽然我没有跟进它,因为我当时从未想过我需要两个图形卡才能通过IOMMU在VM上使用GPU )。
以下是我已经尝试过但没有成功的东西:
这是我用来启动内核的命令行,为了方便起见,每个参数都放在一个单独的行上:
root=/dev/ram0
crypt_root=/dev/disk/by-uuid/c1ce6456-4c6a-4a64-8027-5ec4fdc0f344
dolvm
real_root=/dev/mapper/cryptgentoo-raiz
rootfstype=jfs
real_init=/sbin/init
root_keydev=/dev/disk/by-partuuid/086194de-e476-4abb-82da-9744e6fb0257
root_key=luks-key.gpg
keymap=la
amd_iommu=on
iommu=on我还缺少内核配置选项吗?
更新:由于心不在焉,我错误地发布了ps -ef | grep -i iommu,看看我刚刚发现了什么.
rockshooter ~ # ps -ef | grep iommu
root 66 2 0 02:57 ? 00:00:00 [amd_iommu_v2]如果我看到一个内核线程,我想可能有机会让IOMMU运行,只是我的内核没有提到它。只是一时的猜测..。但我要继续试着用它。
发布于 2016-07-09 11:06:30
最后,在大哭、抱怨和抨击头部之后,我终于明白了到底是怎么回事。
事实证明,IOMMU一直在工作,只是内核日志没有显示它。但是IOMMU驱动程序在那里,它正在工作,当我错误地键入ps -ef而不是dmesg时,我偶然发现:
rockshooter ~ # ps -ef | grep -i iommu
root 66 2 0 04:19 ? 00:00:00 [amd_iommu_v2] 当我看到内核线程在运行时,我想,也许我的IOMMU真的在工作?因此,我执行了我之前对Debian所做的配置步骤,一个小时后,瞧,我在我的虚拟机上连接到我的显卡上玩一些游戏。
请保存这条线,供将来参考,因为它花了我一些好的3个星期来解决这个问题。我仍然给了另一张海报一些当之无愧的+50的声誉,因为在设置和测试这个问题上麻烦。
发布于 2016-06-23 20:46:41
试试Device Drivers >> IOMMU Hardware Support:

然后启用AMD IOMMU support。
启用Support for Intel IOMMU using DMA Remapping Devices
启用Support for Interrupt Remapping
AMD IOMMU Version 2 driver

Bus options (PCI etc.) >> PCI Stub
永远不要grep配置文件,始终使用menuconfig和/键搜索所需的选项。您所链接的指南有三个问题:
我的主板太旧了,无法支持PCI通行证,但我希望您看到,这些选项现在已经正确地enabled.Using --我指示您使用的确切选项:
AGP: Checking aperture...
[ 0.000000] AGP: No AGP bridge found
[ 0.000000] AGP: Node 0: aperture [bus addr 0xc4000000-0xc5ffffff] (32MB)
[ 0.000000] Aperture pointing to e820 RAM. Ignoring.
[ 0.000000] AGP: Your BIOS doesn't leave an aperture memory hole
[ 0.000000] AGP: Please enable the IOMMU option in the BIOS setup
[ 0.000000] AGP: This costs you 64MB of RAM
[ 0.000000] AGP: Mapping aperture over RAM [mem 0xc4000000-0xc7ffffff] (65536KB)
...
[ 0.959270] PCI-DMA: Disabling AGP.
[ 0.959337] PCI-DMA: aperture base @ c4000000 size 65536 KB
[ 0.959338] PCI-DMA: using GART IOMMU.
[ 0.959340] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
...
[ 1.375277] AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
[ 1.375277] AMD IOMMUv2 functionality not available on this systemhttps://unix.stackexchange.com/questions/291297
复制相似问题