如何解决pte读权限未设置?
我试过命令行参数:I 915 . I 915 _ enable _ rc6 = 0
但是没有成功。对ivy bridge CPU还有用吗
另一个(不太可能,但我还是会提到它以防万一)原因可能是您正在使用igb_uio
真的很老的模块(不记得igb_uio什么时候获得IOMMU支持了,大概是1.4.x),也就是
为什么我问的是DPDK版本,但是既然你用的是1.6.0应该没问题。
请在内核命令行中添加intel_iommu=igfx_off进行测试。可能是bios中的dmar表损坏了,所以也请检查一下
对于bios升级
对3.17-rc1有效吗?总线05上的所有8169网卡都启动并运行了吗?
请提供04:00.0的lspci -vv信息
lspci -vvs 04:00.0
04:00.0 PCI桥:as media Technology Inc . ASM 1083/1085 PCIe到PCI桥
(版本03)(Prog-if 00[正常解码])
控制:I/O+Mem+bus master+spec cycle-MemWINV-VGASnoop-ParErr-
步进- SERR-快速B2B- DisINTx-
状态:Cap+66 MHz-UDF-fast B2B-ParErr-DEVSEL = fast & gt;TAbort-& lt;标签-
& ltMAbort-& gt;SERR-& lt;PERR INTx
延迟:0,缓存行大小:64字节
总线:主要=04,次要=05,从属=05,秒延迟=32
桥后I/O:0000 c000-0000 cfff
桥后内存:f7800000-f78fffff
次要状态:66 MHz+fast B2B-ParErr-DEVSEL = fast & gt;TAbort-& lt;标签-
& ltMAbort+& lt;SERR-& lt;PERR-
BridgeCtl:奇偶校验- SERR-诺瓦萨- VGA-马波特-& gt;重置-快速B2B-
PriDiscTmr-SecDiscTmr-DiscTmrStat-DiscTmrSERREn-
功能:[50]MSI:Enable-Count = 1/1 Maskable-64 bit+
地址:0000000000000000数据:0000
功能:[78]电源管理版本3
标志:PME clk-DSI+d 1+D2+aux current = 0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
状态:D0 NoSoftRst+ PME使能- DSel=0 DScale=0 PME-
功能:[80] Express (v1) PCI/PCI-X桥,MSI 00
DevCap: MaxPayload 128字节,PhantFunc 0,延迟L0s & lt64ns,
l 1 & lt;1美国
ext tag-Attn BTN-Attn nind-pw rind-RBE+FLReset-
DevCtl:报告错误:可更正-非致命-致命-
不支持-
RlxdOrd-ext tag-phant func-aux PWR-no snoop+
br会议-
MaxPayload 128字节,MaxReadReq 512字节
DevSta:CorrErr-un CorrErr+fataler-un suppresreq+aux PWR-
透明-
LnkCap:端口#1,速度2.5GT/s,宽度x1,ASPM L0s L1,延迟
L0 & lt2us,l 1 & lt;2us
clock pm-Surprise-LLActRep-bw not-
LnkCtl: ASPM残疾人;禁用-重新训练-通信时钟-
ext synch-clock pm-AutWidDis-BWInt-AutBWInt-
LnkSta:速度2.5GT/s,宽度x1,TrErr-火车- SlotClk-
DLActive- BWMgmt- ABWMgmt-
功能:[c0]子系统:微星国际有限公司设备
7758
功能:[100 v1]虚拟通道
caps:LPE VC = 0 ref clk = 100 ns patentry bits = 1
Arb:固定- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
状态:进行中-
VC0:Caps:pat offset = 00 max slots = 1 rejsnouptrans-
Arb:固定-WRR 32-WRR 64-WRR 128-twrr 128-WRR 256-
ctrl:Enable+ID = 0 ARB select = Fixed TC/VC = 01
状态:正在谈判中
79305f iommu/vt-d:更新以使用PCI DMA别名
e17f9ff iommu/vt-d:使用iommu_group_get_for_dev()
104 a 1c 1 iommu/core:创建中央io MMU组查找/创建接口
好吧,那么它可能不是PCIe到PCI桥的结果,因为05:00.0是
网桥后所有设备的正确请求者ID。不幸地
这意味着问题可能无法解决。我们只看到对a的读取
单个地址,这可能意味着网卡正在使用该读取进行同步
交易排序,例如使用DMA读取来刷新中的DMA写入
设备。如果网卡驱动程序可以看到这个地址,那么它可以
尝试对设备进行一致映射以避免故障。如果它
不兼容,那么这些网卡可能只是与IOMMU不兼容。
这三个独立的网卡是插入主板上的PCI插槽,还是
带有嵌入式PCIe到PCI桥的单个三端口卡?
您也许可以使用iommu=pt在直通模式下运行IOMMU
r8169.use_dac=1,但请注意modinfo中的警告“use_dac:Enable PCI DAC。
在32位PCI插槽上不安全。“不幸的是,如果您不启用use_dac,那么
英特尔iommu将忽略这些设备的直通选项。
还要注意,这个问题与虚拟化/KVM无关。
驱动程序/网络或者驱动程序/PCI可能更合适
分类
因为您显然试图在KVM系统上使用VT-d,因此
大概是设备分配,我会注意到你永远无法
成功地在来宾之间单独分配传统PCI设备,或者
主人和客人之间。IOMMU不具备创建的粒度
在此拓扑中,每个PCI插槽都有单独的IOMMU域。还有,一些(全部?)
Realtek网卡对PCI配置空间有一些奇怪的后门,使得
PCI设备分配的不良目标:
我认为华硕iommu错误都是同一个问题。糟糕的BIOSes。我有一台P45M(华硕笔记本电脑)和一台新的酷睿i5台式机(华硕
主板)有DMAR错误从内核中喷涌而出。关闭VT-d解决了这个问题。USB在上损坏
打开VT-d的桌面。不幸的是,这个问题在2.6.30和更低的内核中没有出现。变通办法是否适用于
2.6.31+内核还是内核维护者要对我们冷眼相待,说找华硕谈谈