Orin NX with pcie switch and i210/i226 can't read and write spi flash

Hi NV_Team,

We have a project ONX(2Lane PCIe) → ASM1806 → I210 + I226 PCIe.

Now the pcie can get asm1806 and i210/i226, but both the I210/I226 can’t read and write its spi flash, here is the log, can you help to check the pcie logs ?

nvidia@nvidia-desktop:~/i210_i226_nvm$ sudo ./eeupdateaarch64 /NIC=1 /INVMUPDATE /FILE=Dev_Start_I210_Copper_NOMNG_4Mb_A2.bin

Using: Intel (R) PRO Network Connections SDK v2.43.8
EEUPDATE v5.43.08.00 
Copyright (C) 1995 Intel Corporation
Intel (R) Confidential and not for general distribution.


NIC Bus Dev Fun Vendor-Device  Branding string
=== === === === ============= =================================================
  1   3  00  00   8086-1531    Intel(R) I210 Blank NVM Device
  2   4  00  00   8086-1531    Intel(R) I210 Blank NVM Device
  3   5  00  00   8086-125F    Client Foxville with Empty Flash Image
  4   6  00  00   8086-1531    Intel(R) I210 Blank NVM Device

Update INVM content ... Verify autoload configuration ...  
	Fail: INVM function called with wrong parameter.
NOT done !

nvidia@nvidia-desktop:~$ lspci 
0004:00:00.0 PCI bridge: NVIDIA Corporation Device 229c (rev a1)
0004:01:00.0 Non-Volatile memory controller: Device 1e4b:1202 (rev 01)
0007:00:00.0 PCI bridge: NVIDIA Corporation Device 229a (rev a1)
0007:01:00.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
0007:02:00.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
0007:02:02.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
0007:02:06.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
0007:02:0e.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
0007:03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Unprogrammed (rev 03)
0007:04:00.0 Ethernet controller: Intel Corporation I210 Gigabit Unprogrammed (rev 03)
0007:05:00.0 Ethernet controller: Intel Corporation Device 125f (rev 04)
0007:06:00.0 Ethernet controller: Intel Corporation I210 Gigabit Unprogrammed (rev 03)
0008:00:00.0 PCI bridge: NVIDIA Corporation Device 229c (rev a1)
0008:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)


nvidia@nvidia-desktop:~/i210_i226_nvm$ sudo lspci -tv
-+-[0007:00]---00.0-[01-ff]----00.0-[02-06]--+-00.0-[03]----00.0  Intel Corporation I210 Gigabit Unprogrammed
 |                                           +-02.0-[04]----00.0  Intel Corporation I210 Gigabit Unprogrammed
 |                                           +-06.0-[05]----00.0  Intel Corporation Device 125f
 |                                           \-0e.0-[06]----00.0  Intel Corporation I210 Gigabit Unprogrammed
 +-[0004:00]---00.0-[01-ff]----00.0  MAXIO Technology (Hangzhou) Ltd. NVMe SSD Controller MAP1202
 \-[0000:00]-

nvidia@nvidia-desktop:~/i210_i226_nvm$ lspci -vvv
0004:00:00.0 PCI bridge: NVIDIA Corporation Device 229c (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 191
	IOMMU group: 5
	Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled]
	Memory behind bridge: 40000000-400fffff [size=1M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport
	Kernel modules: tegra_pcie_dma_test

0004:01:00.0 Non-Volatile memory controller: MAXIO Technology (Hangzhou) Ltd. NVMe SSD Controller MAP1202 (rev 01) (prog-if 02 [NVM Express])
	Subsystem: MAXIO Technology (Hangzhou) Ltd. NVMe SSD Controller MAP1202
	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 191
	IOMMU group: 5
	Region 0: Memory at 2428000000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: nvme
	Kernel modules: nvme

0007:00:00.0 PCI bridge: NVIDIA Corporation Device 229a (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 193
	IOMMU group: 6
	Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0
	I/O behind bridge: 00000000-00002fff [size=12K]
	Memory behind bridge: 40000000-42ffffff [size=48M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport
	Kernel modules: tegra_pcie_dma_test

0007:01:00.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01) (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 239
	IOMMU group: 6
	Bus: primary=01, secondary=02, subordinate=06, sec-latency=0
	I/O behind bridge: 3e100000-3e102fff [size=12K]
	Memory behind bridge: 40000000-42ffffff [size=48M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

0007:02:00.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01) (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 240
	IOMMU group: 6
	Bus: primary=02, secondary=03, subordinate=03, sec-latency=0
	I/O behind bridge: 3e100000-3e100fff [size=4K]
	Memory behind bridge: 40000000-40bfffff [size=12M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

0007:02:02.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01) (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 241
	IOMMU group: 6
	Bus: primary=02, secondary=04, subordinate=04, sec-latency=0
	I/O behind bridge: 3e101000-3e101fff [size=4K]
	Memory behind bridge: 40c00000-417fffff [size=12M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

0007:02:06.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01) (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 242
	IOMMU group: 6
	Bus: primary=02, secondary=05, subordinate=05, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled]
	Memory behind bridge: 41800000-423fffff [size=12M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

0007:02:0e.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01) (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 243
	IOMMU group: 6
	Bus: primary=02, secondary=06, subordinate=06, sec-latency=0
	I/O behind bridge: 3e102000-3e102fff [size=4K]
	Memory behind bridge: 42400000-42ffffff [size=12M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

0007:03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Unprogrammed (rev 03)
	Subsystem: Intel Corporation I210 Gigabit Unprogrammed
	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-
	Interrupt: pin A routed to IRQ 0
	Region 0: Memory at 3228000000 (32-bit, non-prefetchable) [size=8M]
	Region 2: I/O ports at 200000 [size=32]
	Region 3: Memory at 3228800000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>

0007:04:00.0 Ethernet controller: Intel Corporation I210 Gigabit Unprogrammed (rev 03)
	Subsystem: Intel Corporation I210 Gigabit Unprogrammed
	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-
	Interrupt: pin A routed to IRQ 0
	Region 0: Memory at 3229000000 (32-bit, non-prefetchable) [disabled] [size=8M]
	Region 2: I/O ports at 201000 [disabled] [size=32]
	Region 3: Memory at 3228c00000 (32-bit, non-prefetchable) [disabled] [size=16K]
	Capabilities: <access denied>

0007:05:00.0 Ethernet controller: Intel Corporation Device 125f (rev 04)
	Subsystem: Intel 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-
	Interrupt: pin A routed to IRQ 0
	Region 0: Memory at 3229800000 (32-bit, non-prefetchable) [disabled] [size=8M]
	Region 3: Memory at 322a000000 (32-bit, non-prefetchable) [disabled] [size=16K]
	Capabilities: <access denied>

0007:06:00.0 Ethernet controller: Intel Corporation I210 Gigabit Unprogrammed (rev 03)
	Subsystem: Intel Corporation I210 Gigabit Unprogrammed
	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-
	Interrupt: pin A routed to IRQ 0
	Region 0: Memory at 322a800000 (32-bit, non-prefetchable) [disabled] [size=8M]
	Region 2: I/O ports at 202000 [disabled] [size=32]
	Region 3: Memory at 322a400000 (32-bit, non-prefetchable) [disabled] [size=16K]
	Capabilities: <access denied>


nvidia@nvidia-desktop:~/i210_i226_nvm$ cat /proc/iomem 


00000000-00000000 : pcie@14160000
00000000-00000000 : pcie@14160000
  00000000-00000000 : PCI Bus 0004:01
    00000000-00000000 : 0004:01:00.0
      00000000-00000000 : nvme
00000000-00000000 : pcie@141e0000
00000000-00000000 : pcie@141e0000
  00000000-00000000 : PCI Bus 0007:01
    00000000-00000000 : PCI Bus 0007:02
      00000000-00000000 : PCI Bus 0007:03
        00000000-00000000 : 0007:03:00.0
        00000000-00000000 : 0007:03:00.0
      00000000-00000000 : PCI Bus 0007:04
        00000000-00000000 : 0007:04:00.0
        00000000-00000000 : 0007:04:00.0
      00000000-00000000 : PCI Bus 0007:05
        00000000-00000000 : 0007:05:00.0
        00000000-00000000 : 0007:05:00.0
      00000000-00000000 : PCI Bus 0007:06
        00000000-00000000 : 0007:06:00.0
        00000000-00000000 : 0007:06:00.0

*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, I’ll try to help you troubleshoot the issue with the PCIe logs.

Firstly, let’s break down the information provided:

  • You have a Jetson Orin NX project with a 2-lane PCIe setup.
  • You have three PCIe devices connected: ASM1806, I210, and I226.
  • The PCIe interface can detect the ASM1806 and I210/I226 devices, but the I210 and I226 devices cannot read or write to their SPI flash.

To help you troubleshoot this issue, I’ll provide some general information about the PCIe interface on the Jetson Orin NX and some potential causes for the problem.

PCIe Interface on Jetson Orin NX

The Jetson Orin NX module has four PCIe interfaces, each with a different configuration:

  • PCIe Interface 0 (x4): Supports Root Port and Endpoint operation, with a maximum speed of Gen4.
  • PCIe Interface 1 (x1): Supports only Root Port operation, with a maximum speed of Gen4.
  • PCIe Interface 2 (x2): Can be broken into two x1 interfaces (PCIE2 x1 and PCIE3 x1), supporting only Root Port operation, with a maximum speed of Gen4.

Potential Causes for the Issue

Based on the provided information, here are some potential causes for the issue:

  1. PCIe Lane Configuration: Ensure that the PCIe lane configuration is correct for your setup. Since you have a 2-lane PCIe setup, you might need to configure the PCIe interface to use only two lanes.
  2. PCIe Device Configuration: Verify that the PCIe devices (ASM1806, I210, and I226) are configured correctly. Check the device tree or configuration files to ensure that the devices are properly defined and configured.
  3. SPI Flash Configuration: Check the SPI flash configuration for the I210 and I226 devices. Ensure that the SPI flash is properly connected and configured.
  4. PCIe Signal Integrity: PCIe signal integrity issues can cause problems with device detection and communication. Check the PCIe signal routing and ensure that the signals meet the required specifications (e.g., impedance, spacing, and length).
  5. Firmware or Driver Issues: Firmware or driver issues can also cause problems with PCIe device communication. Ensure that the firmware and drivers are up-to-date and compatible with your setup.

Recommendations

To further troubleshoot the issue, I recommend:

  1. Check the PCIe logs: Provide more detailed PCIe logs to help identify the issue.
  2. Verify the PCIe lane configuration: Ensure that the PCIe lane configuration is correct for your setup.
  3. Check the device tree or configuration files: Verify that the PCIe devices are properly defined and configured.
  4. Inspect the SPI flash configuration: Check the SPI flash configuration for the I210 and I226 devices.
  5. Run PCIe signal integrity checks: Verify that the PCIe signal routing meets the required specifications.

If you provide more detailed information about your setup and the PCIe logs, I can help you further troubleshoot the issue.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

  1. PCIe dtsi setting is okay
  2. How to check PCIe logs have error or not ?
  3. I210 we are contact with Intel to check the hardware and software
  4. PCIe signal is follow Jetson design guide

my inputs.

you should be flashing Intel ethernet controllers using lanconf6e tool right?

because this is what we do, especially when they are unprogrammed and we are flashing them first time.

when you run /lanconf6e exe you will get a GUI window as show below.

Hi nagesh_accord,

Because we use Jetson, this is arm64 platform can not use lanconf6e to configure it.

Do you use it on Jetson or X86 ?

Sorry I forgot this.

We usually do it on x86 Intel SBCs which has ubuntu installed.

Okay, but also thanks so much

This issue sounds totally not something that we could help check.

Please contact the vendor of i210/226 for this.