Hi there,
I am trying to connect an external PCIe x1 card to the Jetson using the PCIe x8 slot. The Jetson can recognize the device, but when I try to access the device it experiences an error in the request_irq() kernel function. Looking at “lspci -vv”, it seems that the Interrupt is listed as “pin A routed to IRQ 0”. My understanding is that IRQ 0 is assigned to the system timer, and should not be accessible to peripherals. How can I reassign the IRQ value to an unassigned value so I don’t get errors in request_irq().
Thanks,
John
Hi,
IRQ info in lspci is applicable for PCI not PCIe. Please share dmesg logs with error and “sudo lspci -vvv” output.
Thanks,
Manikanta
Hi Manikanta,
The dmesg output for the device access is as follows, where IRQ_REQUEST is the value returned from request_irq(). All of the prints are produced by the driver code.
[ 720.698565] inputs: dev->pci.pd->irq 0
IRQF 128
devname 18ai32ssc1m
, dv ffffffc7bc4a8000
[ 720.698572] 18ai32ssc1m: IRQ_REQUEST() failed: -22
[ 720.698576] 161. os_reg_mem_rx_u32: ENTER:
[ 720.698580] 167. os_reg_mem_rx_u32:
[ 720.698584] 172. os_reg_mem_rx_u32: BEFORE
[ 720.698591] 177. os_reg_mem_rx_u32: AFTER
[ 720.698593] 182. os_reg_mem_rx_u32:
[ 720.698596] 188. os_reg_mem_rx_u32: EXIT:
[ 720.698598] 161. os_reg_mem_rx_u32: ENTER:
[ 720.698601] 167. os_reg_mem_rx_u32:
[ 720.698603] 172. os_reg_mem_rx_u32: BEFORE
[ 720.698610] 177. os_reg_mem_rx_u32: AFTER
[ 720.698612] 182. os_reg_mem_rx_u32:
[ 720.698615] 188. os_reg_mem_rx_u32: EXIT:
[ 720.698652] inputs: dev->pci.pd->irq 0
IRQF 128
devname 18ai32ssc1m
, dv ffffffc7bc4a8000
[ 720.698655] 18ai32ssc1m: IRQ_REQUEST() failed: -22
[ 720.698659] 161. os_reg_mem_rx_u32: ENTER:
[ 720.698661] 167. os_reg_mem_rx_u32:
[ 720.698664] 172. os_reg_mem_rx_u32: BEFORE
[ 720.698670] 177. os_reg_mem_rx_u32: AFTER
[ 720.698672] 182. os_reg_mem_rx_u32:
[ 720.698675] 188. os_reg_mem_rx_u32: EXIT:
[ 720.698693] 161. os_reg_mem_rx_u32: ENTER:
[ 720.698695] 167. os_reg_mem_rx_u32:
[ 720.698698] 172. os_reg_mem_rx_u32: BEFORE
[ 720.698704] 177. os_reg_mem_rx_u32: AFTER
[ 720.698706] 182. os_reg_mem_rx_u32:
[ 720.698727] 188. os_reg_mem_rx_u32: EXIT:
As you can see the input irq value is 0, while the request returns -22. Using 'sudo lspci -vvv" the output for the device in question is:
0005:02:00.0 Signal processing controller: PLX Technology, Inc. PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (rev ac)
Subsystem: PLX Technology, Inc. PCI9056 32-bit 66MHz PCI <-> IOBus Bridge
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 64
Interrupt: pin A routed to IRQ 0
Region 0: Memory at 1f40000000 (32-bit, non-prefetchable) [size=512]
Region 1: I/O ports at 300000 [size=256]
Region 2: Memory at 1f40000200 (32-bit, non-prefetchable) [size=512]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [48] CompactPCI hot-swap <?>
Capabilities: [4c] Vital Product Data
pcilib: sysfs_read_vpd: read failed: Input/output error
Not readable
Hi,
[ 720.698565] inputs: dev->pci.pd->irq 0
Is it a debug print added by you, if yes can you share code snippet for it?
Print pci_dev->irq, pci_dev is arg passed to probe function.
Please share dmesg logs from the boot and complete output of “sudo lspci -vvv”.
Thanks,
Manikanta