如何解决pte读权限未设置?

相关信息显示与bios或PCI有关,最有可能是主板异常:

我试过命令行参数: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+内核还是内核维护者要对我们冷眼相待,说找华硕谈谈