On a TX1 system with a PCIe to PCI bridge the PCI / interrupt configuration looks like this:
TX1, running Ubuntu, with kernel version 4.4.38
Interrupt for the 8112 and the 2 DDC parts are all at #368
On Xavier the 8112 interrupt says IRQ38, and the 2 DDC devices are at IRQ0, which is wrong!
This is lspci on a working Jetson-TK1. Notice that the interrupts are all assigned to IRQ 368:
nvidia@tegra-ubuntu:~/DDC/acextremeSDK_4.0.1.3/samples$ lspci -vv
00:01.0 PCI bridge: NVIDIA Corporation Device 0fae (rev a1) (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-
Latency: 0
Interrupt: pin A routed to IRQ 368
Bus: primary=00, secondary=01, subordinate=02, sec-latency=0
Memory behind bridge: 13000000-130fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: <access denied>
Kernel driver in use: pcieport
01:00.0 PCI bridge: PLX Technology, Inc. PEX8112 x1 Lane PCI Express-to-PCI Bridge (rev aa) (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-
Latency: 0
Interrupt: pin A routed to IRQ 368
Bus: primary=01, secondary=02, subordinate=02, sec-latency=0
Memory behind bridge: 13000000-130fffff
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: <access denied>
02:00.0 Communication controller: ILC Data Device Corp Device 1a00 (rev 10)
Subsystem: ILC Data Device Corp Device 1a00
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 368
Region 0: Memory at 13000000 (32-bit, non-prefetchable)
Region 1: Memory at 13080000 (32-bit, non-prefetchable)
02:01.0 Communication controller: ILC Data Device Corp Device 1a00 (rev 10)
Subsystem: ILC Data Device Corp Device 1a00
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 368
Region 0: Memory at 13040000 (32-bit, non-prefetchable)
Region 1: Memory at 13081000 (32-bit, non-prefetchable)
On Jetson Xavier 4.9.140-tegra dev kit
This is lspci on Jetson-Xavier. Notice that the bridge has IRQ 38 and the parts behind the bridge are unassigned:
0005:01:00.0 PCI bridge: PLX Technology, Inc. PEX8112 x1 Lane PCI Express-to-PCI Bridge (rev aa) (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-
Latency: 0
Interrupt: pin A routed to IRQ 38
Bus: primary=01, secondary=02, subordinate=02, sec-latency=0
Memory behind bridge: 3a200000-3a2fffff
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: ...
...
...
Capabilities: [100 v1] Power Budgeting <?>
0005:02:00.0 Communication controller: ILC Data Device Corp Device 1a00 (rev 10)
Subsystem: ILC Data Device Corp Device 1a00
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64
Interrupt: pin A routed to IRQ 0
Region 0: Memory at 3a200000 (32-bit, non-prefetchable)
Region 1: Memory at 3a280000 (32-bit, non-prefetchable)
0005:02:01.0 Communication controller: ILC Data Device Corp Device 1a00 (rev 10)
Subsystem: ILC Data Device Corp Device 1a00
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64
Interrupt: pin A routed to IRQ 0
Region 0: Memory at 3a240000 (32-bit, non-prefetchable)
Region 1: Memory at 3a281000 (32-bit, non-prefetchable)
There is no 0 in /proc/interrupts
dmesg says nothing about interrupts
[ 7.626360] pci_bus 0005:00: root bus resource [bus 00-ff]
[ 7.626383] pci_bus 0005:00: root bus resource [io 0x300000-0x3fffff] (bus address [0x3a100000-0x3a1fffff])
[ 7.626386] pci_bus 0005:00: root bus resource [mem 0x3a200000-0x3bffffff]
[ 7.626389] pci_bus 0005:00: root bus resource [mem 0x1c00000000-0x1fffffffff pref]
[ 7.626488] pci 0005:00:00.0: [10de:1ad0] type 01 class 0x060400
[ 7.626656] pci 0005:00:00.0: PME# supported from D0 D3hot D3cold
[ 7.626847] iommu: Adding device 0005:00:00.0 to group 65
[ 7.627257] pci 0005:01:00.0: [10b5:8112] type 01 class 0x060400
[ 7.627884] pci 0005:01:00.0: supports D1
[ 7.627886] pci 0005:01:00.0: PME# supported from D0 D1 D3hot
[ 7.628113] iommu: Adding device 0005:01:00.0 to group 66
[ 7.628213] pci 0005:01:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force'
[ 7.628240] pci 0005:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 7.628618] pci 0005:02:00.0: [4ddc:1a00] type 00 class 0x078000
[ 7.628723] pci 0005:02:00.0: reg 0x10: [mem 0x00000000-0x0003ffff]
[ 7.628777] pci 0005:02:00.0: reg 0x14: [mem 0x00000000-0x00000fff]
[ 7.629259] iommu: Adding device 0005:02:00.0 to group 67
[ 7.629377] pci 0005:02:01.0: [4ddc:1a00] type 00 class 0x078000
[ 7.629468] pci 0005:02:01.0: reg 0x10: [mem 0x00000000-0x0003ffff]
[ 7.629524] pci 0005:02:01.0: reg 0x14: [mem 0x00000000-0x00000fff]
[ 7.630019] iommu: Adding device 0005:02:01.0 to group 68
[ 7.630409] pci_bus 0005:02: busn_res: [bus 02-ff] end is updated to 02
[ 7.631087] pci 0005:00:00.0: BAR 14: assigned [mem 0x3a200000-0x3a2fffff]
[ 7.631092] pci 0005:01:00.0: BAR 14: assigned [mem 0x3a200000-0x3a2fffff]
[ 7.631096] pci 0005:02:00.0: BAR 0: assigned [mem 0x3a200000-0x3a23ffff]
[ 7.631120] pci 0005:02:01.0: BAR 0: assigned [mem 0x3a240000-0x3a27ffff]
[ 7.631143] pci 0005:02:00.0: BAR 1: assigned [mem 0x3a280000-0x3a280fff]
[ 7.631166] pci 0005:02:01.0: BAR 1: assigned [mem 0x3a281000-0x3a281fff]
[ 7.631190] pci 0005:01:00.0: PCI bridge to [bus 02]
[ 7.631223] pci 0005:01:00.0: bridge window [mem 0x3a200000-0x3a2fffff]
[ 7.631286] pci 0005:00:00.0: PCI bridge to [bus 01-ff]
[ 7.631291] pci 0005:00:00.0: bridge window [mem 0x3a200000-0x3a2fffff]
[ 7.631305] pci 0005:00:00.0: Max Payload Size set to 128/ 256 (was 256), Max Read Rq 512
[ 7.631357] pci 0005:01:00.0: Max Payload Size set to 128/ 128 (was 128), Max Read Rq 512
[ 7.631548] pcieport 0005:00:00.0: Signaling PME through PCIe PME interrupt
[ 7.631550] pci 0005:01:00.0: Signaling PME through PCIe PME interrupt
[ 7.631551] pci 0005:02:00.0: Signaling PME through PCIe PME interrupt
[ 7.631572] pci 0005:02:01.0: Signaling PME through PCIe PME interrupt
[ 7.631584] pcie_pme 0005:00:00.0:pcie001: service driver pcie_pme loaded
[ 7.631659] aer 0005:00:00.0:pcie002: service driver aer loaded
These devices / drivers work on TK and TX, but don’t work on Xavier