This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] J721EXSOMXEVM: How to work around errata i2086 for PCIe switches and multifunction devices for J721E/TDA4VM/DRA829?

Part Number: J721EXSOMXEVM
Other Parts Discussed in Thread: TDA4VM, TDA4VL, TDA4VH, DRA829

There is a known errata for J721E/TDA4VM/DRA829 where connecting a PCIe switch, or multi-function PCIe device would cause a system abort. This issue only affects J721E/TDA4VM/DRA829 and does not affect similar devices such as TDA4VH/TDA4VL. For convenience, posting errata documentation, of which errata i2086 is of interest: https://www.ti.com/lit/er/sprz455d/sprz455d.pdf

Logs would look like the following:

errata_i2086_logs.txt
U-Boot SPL 2021.01 (May 07 2023 - 03:04:07 +0000)
Model: Texas Instruments K3 J721E SoC
Board: J721EX-PM2-SOM rev A
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--v08.06.03 (Chill Capybar')
Trying to boot from MMC2
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.8(release):v2.8-896-gc194aa0c6
NOTICE:  BL31: Built : 03:02:04, May  7 2023
I/TC:
I/TC: OP-TEE version: 3.21.0-42-g426790bd3 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile A
rchitecture 9.2-2019.12 (arm-9.10))) #1 Sun May  7 03:02:57 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--v08.06.03 (Chill Capybar')
I/TC: HUK Initialized
I/TC: Activated SA2UL device
I/TC: Fixing SA2UL firewall owner for GP device
I/TC: Enabled firewalls for SA2UL TRNG device
I/TC: SA2UL TRNG initialized
I/TC: SA2UL Drivers initialized
I/TC: Primary CPU switching to normal world boot

U-Boot SPL 2021.01 (May 07 2023 - 03:05:56 +0000)
Model: Texas Instruments K3 J721E SoC
Board: J721EX-PM2-SOM rev A
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--v08.06.03 (Chill Capybar')
Detected: J7X-BASE-CPB rev A
Detected: J7X-VSC8514-ETH rev E2
Trying to boot from MMC2


U-Boot 2021.01 (May 07 2023 - 03:05:56 +0000)

SoC:   J721E SR1.1 GP
Model: Texas Instruments K3 J721E SoC
Board: J721EX-PM2-SOM rev A
DRAM:  4 GiB
Flash: 0 Bytes
MMC:   sdhci@4f80000: 0, sdhci@4fb0000: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA00101 cpsw_ver: 0x6BA80100 ale_ver: 0x00293904
Ports:1 mdio_freq:1000000
Detected: J7X-BASE-CPB rev A
Detected: J7X-VSC8514-ETH rev E2
cdns,sierra serdes@5000000: sierra probed
Net:   eth0: ethernet@46000000port@1
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
Failed to load 'boot.scr'
574 bytes read in 8 ms (69.3 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc1 ...
19147264 bytes read in 765 ms (23.9 MiB/s)
111990 bytes read in 14 ms (7.6 MiB/s)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 000000008fee1000, end 000000008fffffff ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd080]
[    0.000000] Linux version 5.10.168-g991c5ce91e (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 9.5.0, GN
U ld (GNU Binutils) 2.34.0.20200910) #1 SMP PREEMPT Wed May 24 11:19:02 UTC 2023
[    0.000000] Machine model: Texas Instruments K3 J721E SoC
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a4000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a4100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a5000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a5000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a5100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a5100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a6000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node c66-dma-memory@a6000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a6100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node c66-memory@a6100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a7000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node c66-dma-memory@a7000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a7100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node c66-memory@a7100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a8000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node c71-dma-memory@a8000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a8100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node c71-memory@a8100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000ac000000, size 2 MiB
[    0.000000] OF: reserved mem: initialized node r5f-virtual-eth-queues@ac000000, compatible id shared-d
ma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000ac200000, size 30 MiB
[    0.000000] OF: reserved mem: initialized node r5f-virtual-eth-buffers@ac200000, compatible id shared-
dma-pool
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x00000008ffffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
[    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a8ffffff]
[    0.000000]   node   0: [mem 0x00000000a9000000-0x00000000a9ffffff]
[    0.000000]   node   0: [mem 0x00000000aa000000-0x00000000abbfffff]
[    0.000000]   node   0: [mem 0x00000000abc00000-0x00000000abffffff]
[    0.000000]   node   0: [mem 0x00000000ac000000-0x00000000adffffff]
[    0.000000]   node   0: [mem 0x00000000ae000000-0x00000000ffffffff]
[    0.000000]   node   0: [mem 0x0000000880000000-0x00000008ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000008ffffffff]
[    0.000000] cma: Reserved 512 MiB at 0x00000000e0000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: detected: EL2 vector hardening
[    0.000000] CPU features: detected: ARM errata 1165522, 1319367, or 1530923
[    0.000000] CPU features: detected: Spectre-BHB
[    0.000000] CPU features: detected: ARM erratum 1742098
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1032192
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=4
7040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),1m(ospi.sysfw),256k(ospi.e
nv.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);47034000.hyperbus:512k(hbmc.tiboot3),2m(hbmc.tisp
l),4m(hbmc.u-boot),256k(hbmc.env),1m(hbmc.sysfw),-@8m(hbmc.rootfs) root=PARTUUID=7b02bd7a-02 rw rootfstyp
e=ext4 rootwait
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x00000000dc000000-0x00000000e0000000] (64MB)
[    0.000000] Memory: 3271236K/4194304K available (11200K kernel code, 1162K rwdata, 4308K rodata, 1920K
 init, 431K bss, 398780K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 960 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001900000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @880800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000880030000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000880040000
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_n
s: 440795210634 ns
[    0.000002] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008406] Console: colour dummy device 80x25
[    0.012965] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS
 (lpj=800000)
[    0.023637] pid_max: default: 32768 minimum: 301
[    0.028392] LSM: Security Framework initializing
[    0.033146] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.040722] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.049511] rcu: Hierarchical SRCU implementation.
[    0.054568] Platform MSI: msi-controller@1820000 domain created
[    0.060809] PCI/MSI: /bus@100000/interrupt-controller@1800000/msi-controller@1820000 domain created
[    0.070115] EFI services will not be available.
[    0.074834] smp: Bringing up secondary CPUs ...
I/TC: Secondary CPU 1 initializing
I/TC: Secondary CPU 1 switching to normal world boot
[    0.088053] Detected PIPT I-cache on CPU1
[    0.088075] GICv3: CPU1: found redistributor 1 region 0:0x0000000001920000
[    0.088087] GICv3: CPU1: using allocated LPI pending table @0x0000000880050000
[    0.088121] CPU1: Booted secondary processor 0x0000000001 [0x411fd080]
[    0.088169] smp: Brought up 1 node, 2 CPUs
[    0.117515] SMP: Total of 2 processors activated.
[    0.122320] CPU features: detected: 32-bit EL0 Support
[    0.127575] CPU features: detected: CRC32 instructions
[    0.141527] CPU: All CPU(s) started at EL2
[    0.145723] alternatives: patching kernel code
[    0.150733] devtmpfs: initialized
[    0.159528] KASLR disabled due to lack of seed
[    0.164169] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 76450417851000
00 ns
[    0.174132] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.187283] pinctrl core: initialized pinctrl subsystem
[    0.192942] DMI not present or invalid.
[    0.197177] NET: Registered protocol family 16
[    0.202372] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.209673] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.217724] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.226030] thermal_sys: Registered thermal governor 'step_wise'
[    0.226033] thermal_sys: Registered thermal governor 'power_allocator'
[    0.232637] cpuidle: using governor menu
[    0.243404] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.250361] ASID allocator initialised with 65536 entries
[    0.275349] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.282209] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.289056] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.295903] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.303344] cryptd: max_cpu_qlen set to 1000
[    0.309382] k3-chipinfo 43000014.chipid: Family:J721E rev:SR2.0 JTAGID[0x1bb6402f] Detected
[    0.318200] vsys_3v3: supplied by evm_12v0
[    0.322574] vsys_5v0: supplied by evm_12v0
[    0.327369] iommu: Default domain type: Translated
[    0.332515] SCSI subsystem initialized
[    0.336659] mc: Linux media interface: v0.10
[    0.341082] videodev: Linux video capture interface: v2.00
[    0.346713] pps_core: LinuxPPS API ver. 1 registered
[    0.351787] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.361125] PTP clock support registered
[    0.365143] EDAC MC: Ver: 3.0.0
[    0.368948] FPGA manager framework
[    0.372463] Advanced Linux Sound Architecture Driver Initialized.
[    0.379046] clocksource: Switched to clocksource arch_sys_counter
[    0.385364] VFS: Disk quotas dquot_6.6.0
[    0.389394] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.398883] NET: Registered protocol family 2
[    0.403617] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.412214] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.420972] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.429171] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
[    0.436968] TCP: Hash tables configured (established 32768 bind 32768)
[    0.443760] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.450655] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.458046] NET: Registered protocol family 1
[    0.462769] RPC: Registered named UNIX socket transport module.
[    0.468823] RPC: Registered udp transport module.
[    0.473627] RPC: Registered tcp transport module.
[    0.478431] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.485015] NET: Registered protocol family 44
[    0.489559] PCI: CLS 0 bytes, default 64
[    0.493925] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 counters available
[    0.504275] Initialise system trusted keyrings
[    0.508886] workingset: timestamp_bits=46 max_order=20 bucket_order=0
[    0.517011] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.523270] NFS: Registering the id_resolver key type
[    0.528458] Key type id_resolver registered
[    0.532729] Key type id_legacy registered
[    0.536846] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.543693] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.551329] 9p: Installing v9fs 9p2000 file system support
[    0.576363] Key type asymmetric registered
[    0.580550] Asymmetric key parser 'x509' registered
[    0.585549] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[    0.593109] io scheduler mq-deadline registered
[    0.597734] io scheduler kyber registered
[    0.603478] pinctrl-single 4301c000.pinctrl: 94 pins, size 376
[    0.609654] pinctrl-single 11c000.pinctrl: 173 pins, size 692
[    0.618760] ti-pat 31010000.pat: Found PAT Rev 1.0 with 16384 pages
[    0.625192] debugfs: Directory '31010000.pat' with parent 'regmap' already present!
[    0.633169] ti-pat 31011000.pat: Found PAT Rev 1.0 with 16384 pages
[    0.639588] debugfs: Directory '31011000.pat' with parent 'regmap' already present!
[    0.647525] ti-pat 31012000.pat: Found PAT Rev 1.0 with 16384 pages
[    0.653942] debugfs: Directory '31012000.pat' with parent 'regmap' already present!
[    0.661870] ti-pat 31013000.pat: Found PAT Rev 1.0 with 2048 pages
[    0.668194] debugfs: Directory '31013000.pat' with parent 'regmap' already present!
[    0.676144] ti-pat 31014000.pat: Found PAT Rev 1.0 with 2048 pages
[    0.682469] debugfs: Directory '31014000.pat' with parent 'regmap' already present!
[    0.692204] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.700476] arm-smmu-v3 36600000.iommu: ias 48-bit, oas 48-bit (features 0x00001faf)
[    0.708679] arm-smmu-v3 36600000.iommu: allocated 65536 entries for cmdq
[    0.715709] arm-smmu-v3 36600000.iommu: allocated 32768 entries for evtq
[    0.724155] arm-smmu-v3 36600000.iommu: msi_domain absent - falling back to wired irqs
[    0.737299] brd: module loaded
[    0.743661] loop: module loaded
[    0.747400] megasas: 07.714.04.00-rc1
[    0.753238] tun: Universal TUN/TAP device driver, 1.6
[    0.758703] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    0.765114] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.771187] sky2: driver version 1.30
[    0.775569] VFIO - User Level meta-driver version: 0.3
[    0.781376] i2c /dev entries driver
[    0.785936] sdhci: Secure Digital Host Controller Interface driver
[    0.792254] sdhci: Copyright(c) Pierre Ossman
[    0.796994] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.803439] ledtrig-cpu: registered to indicate activity on CPUs
[    0.809784] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.817184] optee: probing for conduit method.
I/TC: Reserved shared memory is enabled
I/TC: Dynamic shared memory is enabled
I/TC: Normal World virtualization support is disabled
I/TC: Asynchronous notifications are disabled
[    0.821745] optee: revision 3.21 (426790bd)
[    0.838144] optee: dynamic shared memory is enabled
[    0.847600] optee: initialized driver
[    0.852743] NET: Registered protocol family 17
[    0.857361] 9pnet: Installing 9P2000 support
[    0.861755] Key type dns_resolver registered
[    0.866274] Loading compiled-in X.509 certificates
[    0.879873] ti-sci 44083000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.3--v08.06.03 (Chill Capybar')
[    0.949476] davinci-mcasp 2ba0000.mcasp: IRQ common not found
[    0.957282] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 100 kHz
[    0.963389] omap_i2c 40b10000.i2c: bus 1 rev0.12 at 100 kHz
[    0.969839] omap_i2c 42120000.i2c: bus 2 rev0.12 at 100 kHz
[    0.976321] pca953x 3-0020: supply vcc not found, using dummy regulator
[    0.983142] pca953x 3-0020: using no AI
[    1.011931] pca953x 3-0022: supply vcc not found, using dummy regulator
[    1.018734] pca953x 3-0022: using AI
[    1.023004] gpio-480 (CTRL_PM_I2C_OE): hogged as output/high
[    1.028979] gpio-481 (MCASP/TRACE_MUX_S0): hogged as output/low
[    1.035221] gpio-482 (MCASP/TRACE_MUX_S1): hogged as output/high
[    1.041715] omap_i2c 2000000.i2c: bus 3 rev0.12 at 400 kHz
[    1.048178] omap_i2c 2010000.i2c: bus 4 rev0.12 at 400 kHz
[    1.058267] omap_i2c 2020000.i2c: bus 5 rev0.12 at 400 kHz
[    1.064583] pca953x 6-0020: supply vcc not found, using dummy regulator
[    1.071411] pca953x 6-0020: using no AI
[    1.099747] omap_i2c 2030000.i2c: bus 6 rev0.12 at 400 kHz
[    1.105847] omap_i2c 2040000.i2c: bus 7 rev0.12 at 100 kHz
[    1.111821] omap_i2c 2050000.i2c: bus 8 rev0.12 at 100 kHz
[    1.118098] pca953x 9-0020: supply vcc not found, using dummy regulator
[    1.124917] pca953x 9-0020: using no AI
[    1.151379] omap_i2c 2060000.i2c: bus 9 rev0.12 at 400 kHz
[    1.157840] ti-sci-intr bus@100000:bus@28380000:interrupt-controller2: Interrupt Router 137 domain cre
ated
[    1.167823] ti-sci-intr bus@100000:interrupt-controller0: Interrupt Router 131 domain created
[    1.176634] ti-sci-intr bus@100000:main-navss:interrupt-controller1: Interrupt Router 213 domain creat
ed
[    1.186503] ti-sci-inta 33d00000.interrupt-controller: Interrupt Aggregator domain 209 created
[    1.208734] j721e-pcie 2900000.pcie: host bridge /bus@100000/pcie@2900000 ranges:
[    1.216408] j721e-pcie 2900000.pcie:       IO 0x0010001000..0x0010010fff -> 0x0010001000
[    1.224687] j721e-pcie 2900000.pcie:      MEM 0x0010011000..0x0017ffffff -> 0x0010011000
[    1.232964] j721e-pcie 2900000.pcie:   IB MEM 0x0000000000..0xffffffffffff -> 0x0000000000
[    1.352140] j721e-pcie 2900000.pcie: Link up
[    1.356559] j721e-pcie 2900000.pcie: PCI host bridge to bus 0000:00
[    1.362967] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.368572] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x10001000-0x10010fff
])
[    1.378262] pci_bus 0000:00: root bus resource [mem 0x10011000-0x17ffffff]
[    1.385316] pci 0000:00:00.0: [104c:b00d] type 01 class 0x060400
[    1.391455] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x4 may corrupt adjacent RW1C
bits
[    1.401404] pci 0000:00:00.0: supports D1
[    1.405499] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    1.411386] pci 0000:00:00.0: reg 0x224: [mem 0x00000000-0x003fffff 64bit]
[    1.418415] pci 0000:00:00.0: VF(n) BAR0 space: [mem 0x00000000-0x00ffffff 64bit] (contains BAR0 for 4
 VFs)
[    1.430435] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.438720] pci 0000:01:00.0: [10b5:8725] type 01 class 0x060400
[    1.444883] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0003ffff]
[    1.451537] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    1.457865] pci 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at
 0000:00:00.0 (capable of 32.000 Gb/s with 5.0 GT/s PCIe x8 link)
[    1.473268] pci 0000:01:00.1: [10b5:87d0] type 00 class 0x088000
[    1.479435] pci 0000:01:00.1: reg 0x10: [mem 0x00000000-0x00001fff]
[    1.485917] pci 0000:01:00.1: enabling Extended Tags
[    1.491257] pci 0000:01:00.2: [10b5:87d0] type 00 class 0x088000
[    1.497420] pci 0000:01:00.2: reg 0x10: [mem 0x00000000-0x00001fff]
[    1.503901] pci 0000:01:00.2: enabling Extended Tags
[    1.509236] pci 0000:01:00.3: [10b5:87d0] type 00 class 0x088000
[    1.515399] pci 0000:01:00.3: reg 0x10: [mem 0x00000000-0x00001fff]
[    1.521880] pci 0000:01:00.3: enabling Extended Tags
[    1.527216] pci 0000:01:00.4: [10b5:87d0] type 00 class 0x088000
[    1.533379] pci 0000:01:00.4: reg 0x10: [mem 0x00000000-0x00001fff]
[    1.539862] pci 0000:01:00.4: enabling Extended Tags
[    1.545271] SError Interrupt on CPU1, code 0xbf000000 -- SError
[    1.545273] CPU: 1 PID: 23 Comm: kworker/1:1 Not tainted 5.10.168-g991c5ce91e #1
[    1.545274] Hardware name: Texas Instruments K3 J721E SoC (DT)
[    1.545275] Workqueue: events deferred_probe_work_func
[    1.545278] pstate: 20000085 (nzCv daIf -PAN -UAO -TCO BTYPE=--)
[    1.545279] pc : pci_generic_config_read+0x3c/0xe0
[    1.545280] lr : pci_generic_config_read+0x24/0xe0
[    1.545281] sp : ffff800011653710
[    1.545282] x29: ffff800011653710 x28: ffff000801a88800
[    1.545284] x27: 0000000000000000 x26: 0000000000000001
[    1.545287] x25: ffff80001128bca8 x24: 0000000000000005
[    1.545289] x23: ffff800011653854 x22: 0000000000000087
[    1.545291] x21: ffff000801a89000 x20: 0000000000000004
[    1.545293] x19: ffff800011653794 x18: 0000000000000000
[    1.545295] x17: 0000000000000000 x16: 000000002e48a1e9
[    1.545297] x15: ffff000800144c90 x14: ffffffffffffffff
[    1.545300] x13: ffff000801a9da1c x12: ffff000801a9d326
[    1.545302] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f
[    1.545304] x9 : 00000000b00d104c x8 : 0000000080b5111d
[    1.545306] x7 : 000000000000ea60 x6 : ffff800011653854
[    1.545308] x5 : ffff000801a88800 x4 : 000000000000000b
[    1.545310] x3 : 0000000000000001 x2 : ffff800013c00008
[    1.545312] x1 : 0000000000000000 x0 : ffff8000116f5000
[    1.545315] Kernel panic - not syncing: Asynchronous SError Interrupt
[    1.545316] CPU: 1 PID: 23 Comm: kworker/1:1 Not tainted 5.10.168-g991c5ce91e #1
[    1.545317] Hardware name: Texas Instruments K3 J721E SoC (DT)
[    1.545318] Workqueue: events deferred_probe_work_func
[    1.545320] Call trace:
[    1.545321]  dump_backtrace+0x0/0x1b8
[    1.545322]  show_stack+0x18/0x38
[    1.545323]  dump_stack+0xe8/0x124
[    1.545324]  panic+0x198/0x360
[    1.545325]  nmi_panic+0xac/0xb0
[    1.545326]  arm64_serror_panic+0x78/0x84
[    1.545327]  do_serror+0x38/0x98
[    1.545328]  el1_error+0x90/0x110
[    1.545329]  pci_generic_config_read+0x3c/0xe0
[    1.545330]  cdns_ti_pcie_config_read+0x18/0x38
[    1.545331]  pci_bus_read_config_dword+0x80/0xe0
[    1.545332]  pci_bus_generic_read_dev_vendor_id+0x34/0x1b0
[    1.545333]  pci_bus_read_dev_vendor_id+0x4c/0x70
[    1.545334]  pci_scan_single_device+0x80/0x100
[    1.545335]  pci_scan_slot+0x74/0x120
[    1.545336]  pci_scan_child_bus_extend+0x54/0x298
[    1.545337]  pci_scan_bridge_extend+0x2a0/0x588
[    1.545338]  pci_scan_child_bus_extend+0x1e4/0x298
[    1.545339]  pci_scan_root_bus_bridge+0x64/0xd8
[    1.545340]  pci_host_probe+0x18/0xc8
[    1.545341]  cdns_pcie_host_setup+0x534/0x970
[    1.545342]  j721e_pcie_probe+0x498/0x828
[    1.545343]  platform_drv_probe+0x54/0xa8
[    1.545344]  really_probe+0xec/0x400
[    1.545345]  driver_probe_device+0x58/0xb8
[    1.545346]  __device_attach_driver+0xb8/0xe0
[    1.545347]  bus_for_each_drv+0x78/0xd0
[    1.545348]  __device_attach+0xfc/0x190
[    1.545349]  device_initial_probe+0x14/0x20
[    1.545350]  bus_probe_device+0x9c/0xa8
[    1.545351]  deferred_probe_work_func+0x88/0xc0
[    1.545351]  process_one_work+0x1bc/0x358
[    1.545352]  worker_thread+0x1f8/0x440
[    1.545353]  kthread+0x140/0x160
[    1.545354]  ret_from_fork+0x10/0x30
[    1.545363] SMP: stopping secondary CPUs
[    1.545364] Kernel Offset: disabled
[    1.545366] CPU features: 0x28040022,20006008
[    1.545366] Memory Limit: none

As multi-function PCIe devices and PCIe switches are common, how can we work around this errata?