首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为AMD IOMMU编译Gentoo内核?

如何为AMD IOMMU编译Gentoo内核?
EN

Unix & Linux用户
提问于 2016-06-22 06:21:45
回答 2查看 2.2K关注 0票数 1

我有一个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是否在我的系统上运行:

代码语言:javascript
复制
dmesg | grep AMD-Vi

我的内核日志上没有任何关于AMD-Vi的东西。

此外,当我试图使用附加的PCI设备在virt管理器上启动VM时,我会收到一条消息:“启动域出错:不支持配置:主机不支持主机PCI设备的传递”。

我发现的几乎所有东西都是针对Fedora、Ubuntu和Debian的,IOMMU在这些地方显然是开箱即用的。我不认为这是我的主板和CPU不支持它的问题,因为我的BIOS有一个选项,而且我还记得几年前我能够在Debian上运行一个带有IOMMU的VirtualBox VM (虽然我没有跟进它,因为我当时从未想过我需要两个图形卡才能通过IOMMU在VM上使用GPU )。

以下是我已经尝试过但没有成功的东西:

  1. 使用标准内核而不是硬内核。
  2. 支持设备驱动程序>> IOMMU硬件支持,AMD支持,支持使用DMA内存设备的Intel IOMMU,支持中断清除和总线选项(PCI等) >> PCI Stub。
  3. 使用最新的内核,目前刚刚升级到4.4.8硬化-R1。

这是我用来启动内核的命令行,为了方便起见,每个参数都放在一个单独的行上:

代码语言:javascript
复制
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,看看我刚刚发现了什么.

代码语言:javascript
复制
rockshooter ~ # ps -ef | grep iommu
root        66     2  0 02:57 ?        00:00:00 [amd_iommu_v2]

如果我看到一个内核线程,我想可能有机会让IOMMU运行,只是我的内核没有提到它。只是一时的猜测..。但我要继续试着用它。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-07-09 11:06:30

最后,在大哭、抱怨和抨击头部之后,我终于明白了到底是怎么回事。

事实证明,IOMMU一直在工作,只是内核日志没有显示它。但是IOMMU驱动程序在那里,它正在工作,当我错误地键入ps -ef而不是dmesg时,我偶然发现:

代码语言:javascript
复制
rockshooter ~ # ps -ef | grep -i iommu
root        66     2  0 04:19 ?        00:00:00 [amd_iommu_v2]  

当我看到内核线程在运行时,我想,也许我的IOMMU真的在工作?因此,我执行了我之前对Debian所做的配置步骤,一个小时后,瞧,我在我的虚拟机上连接到我的显卡上玩一些游戏。

请保存这条线,供将来参考,因为它花了我一些好的3个星期来解决这个问题。我仍然给了另一张海报一些当之无愧的+50的声誉,因为在设置和测试这个问题上麻烦。

票数 0
EN

Unix & Linux用户

发布于 2016-06-23 20:46:41

IOMMU主要选项

试试Device Drivers >> IOMMU Hardware Support

AMD IOMMU

然后启用AMD IOMMU support

DMA重映射

启用Support for Intel IOMMU using DMA Remapping Devices

可选: IRQ

启用Support for Interrupt Remapping

可选:启用版本2支持

AMD IOMMU Version 2 driver

PCI选项

Bus options (PCI etc.) >> PCI Stub

永远不要grep配置文件,始终使用menuconfig/键搜索所需的选项。您所链接的指南有三个问题:

  1. 它是为Fedora/Redhat用户量身定做的。
  2. 由于#1,内核版本是不同的,因此选项在不同的位置。
  3. Gentoo的内核比指南中使用的内核更新。

更新

我的主板太旧了,无法支持PCI通行证,但我希望您看到,这些选项现在已经正确地enabled.Using --我指示您使用的确切选项:

IOMMU主要选项

代码语言:javascript
复制
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 system
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/291297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档