定制 PCIe 视频编码器的供应商表示,我们应该在我们的机器上禁用 ACS(访问控制服务),以便卡驱动程序正常运行。
他们还没有说如何做到这一点。
这篇文章位于 NVIDIA GPU 之上说要使用该setpci
命令,但由于我们不使用 NVIDIA 并且有不同的主板,因此设备地址会有所不同(我猜)。
例如,
setpci -s 02:01.0 f2a.w=0000
不做任何事...
编辑二 例如:
# setpci -v -s 02:04.0 220.w
0000:02:04.0 @220 = 000d
# setpci -v -s 02:04.0 220.w=0000
0000:02:04.0 @220 0000
# setpci -v -s 02:04.0 220.w
0000:02:04.0 @220 = 000d
如何找到主板上实际 PCI 桥的寄存器地址?
的(修剪后的)输出lspci -vvv
如下。
编辑
抱歉,忘记了操作系统信息:
32 位 Centos6,内核 4.4.127-1.el6.elrepo.i686 #1 SMP Sun Apr 8 09:44:43 EDT 2018 i686 i686 i386 GNU/Linux
00:1c.0 PCI bridge: Intel Corporation Device a114 (rev f1) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [140 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
Kernel driver in use: pcieport
00:1c.5 PCI bridge: Intel Corporation Device a115 (rev f1) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [140 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
02:01.0 PCI bridge: Pericom Semiconductor Device b608 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [220 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl+ DirectTrans+
ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
02:02.0 PCI bridge: Pericom Semiconductor Device b608 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [220 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl+ DirectTrans+
ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
02:03.0 PCI bridge: Pericom Semiconductor Device b608 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [220 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl+ DirectTrans+
ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
02:04.0 PCI bridge: Pericom Semiconductor Device b608 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [220 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl+ DirectTrans+
ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
答案1
您想尝试一下,看看输出是否有所改善吗?
setpci -v -s 02:04.0 ecap_acs+6.w
setpci -v -s 02:04.0 ecap_acs+6.w=0
setpci -v -s 02:04.0 ecap_acs+6.w
编辑1:您的 setpci
命令将发送至 ACS 扩展功能;但后来是不是跟随右偏移量(6) 为了ACS 控制寄存器
编辑2: 如果你想看看如何 设置pci 实用程序正在处理 PCI Express 功能和扩展功能,而您正在对某个硬件端口或设备的访问进行故障排除……另一个有趣的视图是添加该 -G
选项。这通常效率不高,但正如您在此处所看到的,它提供了整个过程的视图能力和扩展功能遍历列表。例如,在根端口上 --
user@host:~$ sudo setpci -G -v -s 00:01.1 ecap_acs+6.w
Trying method linux-sysfs......using /sys/bus/pci...OK
Decided to use linux-sysfs
0000:00:01.1 0000:00:01.1: Found capability 0001 of type 1 at 0050
0000:00:01.1: Found capability 0010 of type 1 at 0058
0000:00:01.1: Found capability 0005 of type 1 at 00a0
0000:00:01.1: Found capability 000d of type 1 at 00c0
0000:00:01.1: Found capability 0008 of type 1 at 00c8
0000:00:01.1: Found capability 0001 of type 1 at 0050
0000:00:01.1: Found capability 0010 of type 1 at 0058
0000:00:01.1: Found capability 0005 of type 1 at 00a0
0000:00:01.1: Found capability 000d of type 1 at 00c0
0000:00:01.1: Found capability 0008 of type 1 at 00c8
0000:00:01.1: Found capability 000b of type 2 at 0100
0000:00:01.1: Found capability 0001 of type 2 at 0150
0000:00:01.1: Found capability 0019 of type 2 at 0270
0000:00:01.1: Found capability 000d of type 2 at 02a0
0000:00:01.1: Found capability 001e of type 2 at 0370
0000:00:01.1: Found capability 001d of type 2 at 0380
0000:00:01.1: Found capability 0025 of type 2 at 0400
0000:00:01.1: Found capability 0026 of type 2 at 0410
0000:00:01.1: Found capability 0027 of type 2 at 0440
(ecap 000d @2a0) @2a6 = 0000