(TX2)R28.2.1: request_irq for MSI-X failed

Hello,

My TX2i is running Kernel 4.4.38
The TX2i is connected to an Altera FPGA via PCIe
The output of lspci for this device is:

01:00.0 Unassigned class [ff00]: Altera Corporation Device 0000
	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 388
	Region 0: Memory at 58000000 (64-bit, prefetchable) [size=8M]
	Capabilities: [50] MSI: Enable- Count=1/16 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [68] **MSI-X: Enable- Count=8 Masked-**
		Vector table: BAR=0 offset=00080000
		PBA: BAR=0 offset=00090000
	Capabilities: [78] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [80] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #1, Speed 2.5GT/s, Width x4, ASPM L0s, Exit Latency L0s <4us, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
	Capabilities: [200 v1] Vendor Specific Information: ID=1172 Rev=0 Len=044 <?>
	Kernel driver in use: rcmcr


The kernel code I’m running is:

MsiCount = pci_msi_vec_count (pPciDev);
vecs = pci_alloc_irq_vectors(pPciDev, 1, 8, PCI_IRQ_ALL_TYPES);
irq0 = pci_irq_vector(pPciDev, 0);
err = request_irq(irq0, IrqHandler, IRQF_SHARED,“isr”, pPciDev);

request_irq failed.

Same kernel code is running under linux4.9.20 with Intel module on the same FPGA.

Is it possible that this TX2 kernel version does not support MSI-X ?

Thank you,
Zvika

Hi,
Th would need other users to check and share experience. If Kernel 4.9 is required in the use-case, we would suggest upgrade to Jetpack 4.6.3 and try.

1 Like

Hi,

Thank you very much.
I will try and update soon.

Best regards,
Zvika

Hello,

I burned L4T 32.1 (Kernel 4.9.140)

With this image:
irq0 = pci_irq_vector(pPciDev, 0);
err = request_irq(irq0, Irq0Handler, IRQF_SHARED,“isr0”, pPciDev);
err = 0

Then I called:
irq1 = pci_irq_vector(pPciDev, 1);
err = request_irq(irq1, Irq1Handler, IRQF_SHARED,“isr1”, pPciDev);
err = -22

It seems this image is better then L4T 28.2.1. Connection to first IRQ is OK.
But the connection to the rest 7 interrupts failed.

Can you please advise ?

Thank you,
Zvika

Hi,
The latest r32 releases is r32.7.3(Jetpack 4.6.3). Please try this release.

Hello,

I tried the latest release: r32.7.3
Attached the output of /proc/version.

This upgrade did not solve the problem.
Attached the output of lspci before and after insmod of my driver .
It seems MSI is not enabled.

Can you please advise ?

Thank you,
Zvika
dmesg.log (59.2 KB)
lspci_after.log (5.9 KB)
lspci_before.log (5.8 KB)
version.log (233 Bytes)

Sorry - My mistake.
I didn’t call: pci_alloc_irq_vectors (pPciDev, 1, 8, PCI_IRQ_MSIX)

Thank you,
Zvika

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.