[BPI-R3] NVME connection issue

Hi. Is anyone successfully using the Patriot P300 m.2 drive on Banana Pi Bpi R3 and Openwrt at the moment? Thanks.

Working NVME SSD on Banana Pi r3 (BPi R3)


Disk Model: KBG302MS128G NMVe Toshiba 128GB

Driver Packages (as per jtxnn678): kmod-nvme



Procedure

  1. Start with working OWRT on the BPiR3, Install SSD to M.2 Slot of the BPiR3, boot up.

  2. Delete existing partitions, create new partitions, format partitions ext4 (block 2048), mount partitions

    # Delete all partitions and create one new one. From terminal (ubuntu) also works from OWRT:
     fdisk -l             # List all devices, note dev/nvme0n1 partition of the SSD (listed at the end)
     fdisk /dev/nvme0n1   # Format USB drive
     m                    # help
     d                    # Delete partiion
     1             	     # Select partition X to delete
     p                    # Print partition table to verify deleted (might not need this)
     # Repeat for other partitions on USB
     n                    # Create a New Partition
     1                    # Assign Partition number to New Partition
     Enter                # Choose default value: p - primary (Extended is for legacy MBR w/ partitions > 4 on a disk)
     Enter                # Use Default sector for First Sector (ie. 2048)
     Enter                # Use Default Sector for Last Sector (Partition_size_MB)*(First Sector)=Last Sector (ie.Partition Size:10GB: 10,000*2048=20480000 (Last Sector 20480000))
     w                    # Write/commit all changes to disk
    # Format USB as EXT4 format with mkfs
    #   Syntax:  mkfs.ext4 [options] /dev/nvme0n1p1 
    #   [options]
    #     -L 	# specifies the label for the partition
    #     -m    # sets the reserved blocks percentage, which is 1 (1%) in this case
    #     -b 	# specifies the block size, which we’ve set to 4096 bytes,
    
    #  Syntax: (Formatting)
    
       fdisk -l       # find device name  See Screenshots above
       mkfs.ext4 -L EXT4 -m 1 -b 2048 /dev/nvme0n1p1
       mkfs.ext4 -L EXT4 -m 1 -b 2048 /dev/nvme0n1p2
    
    # Now Mount  the nvme SSD for us
    # Note: I created two partitions on my nvme, one to be used for logging and the other for future use.
    
       mkdir /mnt/nvme1
       mkdir /mnt/nvme2
    
       mount /dev/nvme0n1p1 /mnt/nvme1    # See screenshots above
    # Response:
       [ 9060.486963] EXT4-fs (nvme0n1p1): mounted filesystem eabc402a-47a6-4ce3-aabd-49a0ad1d3752 r/w with ordered data mode. Quota mode: disabled.
    
       mount /dev/nvme0n1p2 /mnt/nvme2
    # Response:
       [ 9070.658167] EXT4-fs (nvme0n1p2): mounted filesystem b6782965-07b7-4a2f-b46f-63a5cee1c7f7 r/w with ordered data mode. Quota mode: disabled.
    
        df -h    # verify partition(s) mounted  See screenshots above.
    
    # How To - Unmount NVMe Partitions
        umount /dev/nvme0n1p1
        umount /dev/nvme01np2
        df -h    # verify partition(s) unmounted  See Screenshots
    

Hello :wave: frank-w

Title:

BPi-R3 Mini: PCIe AER errors and kernel panic with Crucial P310 NVMe SSD

Labels:

bug, hardware, mediatek, pcie, nvme, r3-mini


:clipboard: Issue Body

Hardware

· Board: Banana Pi R3 Mini · SoC: MediaTek MT7986 · NVMe: Crucial P310 2TB PCIe Gen4 (Micron/Crucial Technology Device 5426) · Boot Media: eMMC (primary), SPI NAND (secondary) · RAM: 2GB DDR4

Software

· Firmware: ImmortalWrt 24.10.4 (BananaWRT custom build) · U-Boot: 2024.10-ImmortalWrt-r33602-e717d133ed6d · Kernel: 6.6.110 · Build Date: Oct 27 2025

Problem Description

The Crucial P310 NVMe SSD is detected at the PCIe level but causes kernel panics due to PCIe AER errors when NVMe drivers load. The system works perfectly without NVMe modules, but crashes during NVMe initialization.

What Works :white_check_mark:

· PCIe enumeration detects NVMe controller · Hardware is physically compatible · System boots and runs stable without NVMe modules · U-Boot recognizes PCIe topology

What Fails :x:

· Kernel panic when nvme/nvme-pci modules load · PCIe AER errors trigger system crashes · NVMe drive never becomes available to userspace

Critical Error Logs

PCIe Detection (Works):

[    2.637095] pci 0000:01:00.0: [c0a9:5426] type 00 class 0x010802
[    2.650087] pci 0000:01:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x2 link at 0000:00:00.0

NVMe Initialization (Starts then Fails):

[  553.270770] nvme 0000:01:00.0: assign IRQ: got 128
[  553.275801] nvme nvme0: pci function 0000:01:00.0
[  553.419853] nvme nvme0: allocated 64 MiB host memory buffer.

PCIe AER Errors (Cause Crash):

[  553.501807] pcieport 0000:00:00.0: AER: Corrected error message received from 0000:00:00.0
[  553.514692] pcieport 0000:00:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
[  553.532577] pcieport 0000:00:00.0:    [ 0] RxErr
[  553.550148] pcieport 0000:00:00.0: AER: Uncorrected (Fatal) error message received from 0000:00:00.0
[  553.566716] pcieport 0000:00:00.0:    [ 5] SDES                   (First)
[  553.592570] pcieport 0000:00:00.0:    [14] CmpltTO
[  553.607322] pcieport 0000:00:00.0: AER: broadcast error_detected message
[  553.624982] nvme nvme0: frozen state error detected, reset controller

Final Kernel Panic:

[  553.769402] Internal error: synchronous external abort: 0000000096000210 [#1] SMP
[  554.009534] Kernel panic - not syncing: synchronous external abort: Fatal exception

Debug Information

Current PCIe Status:

# lspci
00:00.0 PCI bridge: MEDIATEK Corp. Device 1f32 (rev 01)
01:00.0 Non-Volatile memory controller: Micron/Crucial Technology Device 5426 (rev 01)

# ls /dev/nvme*
ls: /dev/nvme*: No such file or directory

# cat /proc/cmdline
root=/dev/fit0 rootwait

NVMe Module Status:

# lsmod | grep nvme
(no output - modules not loaded to avoid crash)

# find /lib/modules -name "*nvme*"
/lib/modules/6.6.110/kernel/drivers/nvme/host/nvme.ko
/lib/modules/6.6.110/kernel/drivers/nvme/host/nvme-core.ko

Attempted Solutions

  1. Kernel Parameters:
    pci=noaer aer=off pcie_aspm=force
    
    · Result: System boots but NVMe drivers don’t auto-load
  2. Manual Module Loading:
    modprobe nvme nvme-pci
    
    · Result: Immediate kernel panic
  3. PCIe Link Management: · Tried various pcie_aspm.policy settings · No improvement in stability

Specific Questions for frank-w

  1. PCIe AER Configuration: How to properly disable AER for MT7986’s PCIe controller? The standard pci=noaer doesn’t seem sufficient.
  2. Gen4/Gen3 Compatibility: Are there known issues with Gen4 NVMe drives on the BPi-R3 Mini’s Gen3 controller? Should we force Gen3 mode?
  3. Device Tree Modifications: Are there specific DTS properties needed for stable PCIe operation with high-power NVMe drives?
  4. Power Management: Could this be a power delivery issue? The Crucial P310 is a high-performance drive - are there known power limitations on the R3 Mini’s M.2 slot?
  5. Kernel Configuration: Should NVMe support be compiled in rather than modular for this platform? Are there specific MT7986 PCIe patches needed?
  6. Error Recovery: The AER subsystem seems to trigger fatal errors on correctable issues - how can we make error recovery more robust?
  7. Hardware Workarounds: Are there known compatible NVMe models that work better with this board?

Additional Context

· The same Crucial P310 works perfectly in other x86 and ARM systems · BPi-R3 Mini PCIe link shows 8 Gb/s available (5.0 GT/s x2) as expected · U-Boot PCIe enumeration works correctly · Issue occurs specifically during Linux NVMe driver initialization

Supporting Files

If needed, I can provide:

· Complete dmesg log · U-Boot environment · Device tree source · Kernel config


:mag: Why This Needs Expertise

· BPi-R3 Mini hardware specifics · MediaTek MT7986 PCIe implementation · OpenWrt kernel configuration for this platform · Device tree customization for stable operation

This appears to be a platform-specific issue requiring expertise in both the hardware design and the OpenWrt software stack for this particular board.

The core issue: PCIe link establishes but AER errors during NVMe initialization trigger fatal error recovery that crashes the system. Standard AER disable parameters don’t prevent the crashes.


This comprehensive issue provides all the technical details frank-w would need to understand and help solve the problem. It shows you’ve done substantial troubleshooting and narrows down the issue to specific PCIe/AER interactions on the BPi-R3 Mini platform.

Afaik gen3 driver means mtkv3 and not pciev3. I’m no pci expert but i remember similar issues with some v3 ssd. Seems really some features are missing (did not find aer in driver). If there is no way to disable aer in firmware i would define ssd as incompatible.

Try to boot something with a more recent kernel version. Who knows, there already may be a fix for your problem.

Hi guys,

I was checking the PCIe status on my BananaPi R3 Mini running Bananawrt, and here’s what I see:

lspci

00:00.0 PCI bridge: MEDIATEK Corp. Device 1f32 (rev 01) 01:00.0 Non-Volatile memory controller: Micron/Crucial Technology Device 5426 (rev 01)

ls /dev/nvme*

ls: /dev/nvme*: No such file or directory

cat /proc/cmdline

root=/dev/fit0 rootwait

The NVMe device shows up in lspci but no /dev/nvme* device nodes are present, so the system isn’t recognizing it for use.

Could you advise on the next steps to get the NVMe detected properly in Bananawrt? Do I need specific kernel modules, device tree changes, or a boot parameter adjustment?

Thanks in advance!

I guess nvme driver is missing or not loaded

Try

zgrep -i nvme /proc/config.gz

root@BananaWRT:~# [ 1261.715347] kmodloader: loading kernel modules from /etc/modules.d/* [ 1261.730488] nvme 0000:01:00.0: assign IRQ: got 128

[ 1261.735467] nvme nvme0: pci function 0000:01:00.0

[ 1261.740258] nvme 0000:01:00.0: enabling device (0000 → 0002)

[ 1261.745998] nvme 0000:01:00.0: enabling bus mastering

[ 1261.751129] mtk-pcie-gen3 11280000.pcie: msi#0x1 address_hi 0x0 address_lo 0x11280c00 data 1

[ 1261.759610] nvme 0000:01:00.0: save config 0x00: 0x5426c0a9

[ 1261.765166] nvme 0000:01:00.0: save config 0x04: 0x00100406

[ 1261.770729] nvme 0000:01:00.0: save config 0x08: 0x01080201

[ 1261.776283] nvme 0000:01:00.0: save config 0x0c: 0x00000000

[ 1261.781843] nvme 0000:01:00.0: save config 0x10: 0x20000004

[ 1261.787397] nvme 0000:01:00.0: save config 0x14: 0x00000000

[ 1261.792982] nvme 0000:01:00.0: save config 0x18: 0x00000000

[ 1261.798551] nvme 0000:01:00.0: save config 0x1c: 0x00000000

[ 1261.804119] nvme 0000:01:00.0: save config 0x20: 0x00000000

[ 1261.809690] nvme 0000:01:00.0: save config 0x24: 0x00000000

[ 1261.815260] nvme 0000:01:00.0: save config 0x28: 0x00000000

[ 1261.820832] nvme 0000:01:00.0: save config 0x2c: 0x2b00c0a9

[ 1261.826387] nvme 0000:01:00.0: save config 0x30: 0x00000000

[ 1261.831952] nvme 0000:01:00.0: save config 0x34: 0x00000080

[ 1261.837507] nvme 0000:01:00.0: save config 0x38: 0x00000000

[ 1261.843160] nvme 0000:01:00.0: save config 0x3c: 0x00000180

[ 1261.891782] hwmon hwmon4: temp1_input not attached to any thermal zone

[ 1261.898399] hwmon hwmon4: temp2_input not attached to any thermal zone

[ 1261.908157] nvme nvme0: allocated 64 MiB host memory buffer.

[ 1261.916494] mtk-pcie-gen3 11280000.pcie: msi#0x1 address_hi 0x0 address_lo 0x11280c00 data 1

[ 1261.924984] mtk-pcie-gen3 11280000.pcie: msi#0x2 address_hi 0x0 address_lo 0x11280c00 data 2

[ 1261.933495] mtk-pcie-gen3 11280000.pcie: msi#0x3 address_hi 0x0 address_lo 0x11280c00 data 3

[ 1261.941945] mtk-pcie-gen3 11280000.pcie: msi#0x4 address_hi 0x0 address_lo 0x11280c00 data 4

[ 1261.950386] mtk-pcie-gen3 11280000.pcie: msi#0x5 address_hi 0x0 address_lo 0x11280c00 data 5

[ 1261.961757] nvme nvme0: 4/0/0 default/read/poll queues

[ 1261.975854] nvme0n1: p1 p2 p3 p4

[ 1261.982820] kmodloader: done loading kernel modules from /etc/modules.d/*

[ 1262.095577] pcieport 0000:00:00.0: AER: Corrected error message received from 0000:00:00.0

[ 1262.103885] pcieport 0000:00:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)

[ 1262.113488] pcieport 0000:00:00.0: device [14c3:1f32] error status/mask=00000001/00006000

[ 1262.121826] pcieport 0000:00:00.0: [ 0] RxErr

[ 1262.143925] pcieport 0000:00:00.0: AER: Uncorrected (Fatal) error message received from 0000:00:00.0

[ 1262.153099] pcieport 0000:00:00.0: PCIe Bus Error: severity=Uncorrected (Fatal), type=Transaction Layer, (Receiver ID)

[ 1262.163782] pcieport 0000:00:00.0: device [14c3:1f32] error status/mask=00000020/00400000

[ 1262.172118] pcieport 0000:00:00.0: [ 5] SDES (First)

[ 1262.178897] pcieport 0000:00:00.0: AER: broadcast error_detected message

[ 1262.185582] nvme nvme0: frozen state error detected, reset controller

[ 1262.327704] Internal error: synchronous external abort: 0000000096000210 [#1] SMP

[ 1262.335183] Modules linked in: nvme nvme_core pppoe ppp_async option nft_fib_inet nf_flow_table_inet wireguard usb_wwan rndis_host pppox ppp_mppe ppp_generic nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nft_log nft_limit nft_hash nft_fullcone(O) nft_flow_offload nft_fib_ipv6 nft_fib_ipv4 nft_fib nft_ct nft_chain_nat nf_tables nf_nat_tftp nf_nat_snmp_basic nf_nat_sip nf_nat_pptp nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda nf_nat nf_flow_table nf_conntrack_tftp nf_conntrack_snmp nf_conntrack_sip nf_conntrack_sane nf_conntrack_pptp nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp nf_conntrack_broadcast nf_conntrack_amanda nf_conntrack mt7915e(O) mt76_connac_lib(O) mt76(O) mac80211(O) libchacha20poly1305 chacha_neon cfg80211(O) cdc_ether usbserial usbnet ums_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda ts_kmp ts_fsm ts_bm slhc poly1305_neon

[ 1262.335345] nfnetlink nf_reject_ipv6 nf_reject_ipv4 nf_log_syslog nf_defrag_ipv6 nf_defrag_ipv4 macvlan libcurve25519_generic libcrc32c libchacha compat(O) cls_flower asn1_decoder act_vlan crypto_safexcel ntfs3 cls_bpf act_bpf sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32 cls_route cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred act_gact pwm_fan cryptodev(O) ip6_udp_tunnel udp_tunnel sit tunnel4 ip_tunnel nls_utf8 nls_iso8859_1 nls_cp437 crypto_user algif_skcipher algif_rng algif_hash algif_aead af_alg sha512_arm64 sha1_ce sha1_generic seqiv md5 geniv des_generic libdes authencesn authenc arc4 uas usb_storage leds_gpio xhci_plat_hcd xhci_pci xhci_mtk_hcd xhci_hcd gpio_button_hotplug(O) vfat fat exfat usbcore usb_common aquantia air_en8811h mii

[ 1262.492355] CPU: 0 PID: 672 Comm: irq/129-aerdrv Tainted: G M O 6.6.110 #0

[ 1262.500422] Hardware name: Bananapi BPi-R3 Mini (DT)

[ 1262.505368] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=–)

[ 1262.512309] pc : pci_msi_mask_irq+0x48/0x84

[ 1262.516485] lr : mtk_pcie_msi_irq_mask+0x14/0x28

[ 1262.521087] sp : ffffffc082c43ab0

[ 1262.524384] x29: ffffffc082c43ab0 x28: 0000000000000000 x27: ffffffc08009da00

[ 1262.531501] x26: ffffffc082c43cfc x25: ffffff800ed50eac x24: 0000000000000000

[ 1262.538617] x23: 000000000000008c x22: ffffff800ed50f50 x21: ffffff800b043b00

[ 1262.545733] x20: ffffff800ed50e30 x19: ffffff800ed50e30 x18: 0000000000000000

[ 1262.552849] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000

[ 1262.559965] x14: 0000000000000000 x13: 00000000000003b1 x12: 0000000000000001

[ 1262.567080] x11: 000000000000008c x10: ffffffc080a94150 x9 : 1ffffff001da1c41

[ 1262.574195] x8 : ffffff800ed0e200 x7 : 000000000000008c x6 : ffffff800ed0e208

[ 1262.581312] x5 : 000000000000000c x4 : 0000000000000000 x3 : 000000000000004c

[ 1262.588427] x2 : 0000000000000001 x1 : ffffffc08134f000 x0 : ffffff8000af3180

[ 1262.595543] Call trace:

[ 1262.597975] pci_msi_mask_irq+0x48/0x84

[ 1262.601796] __irq_disable+0x80/0xb0

[ 1262.605360] irq_shutdown+0x90/0x94

[ 1262.608833] free_irq+0x2a0/0x2e0

[ 1262.612134] pci_free_irq+0x1c/0x30

[ 1262.615607] 0xffffffc079a5f610

[ 1262.618737] 0xffffffc079a61a44

[ 1262.621863] 0xffffffc079a61cd8

[ 1262.624989] report_error_detected+0xd4/0x224

[ 1262.629329] report_frozen_detected+0x14/0x1c

[ 1262.633668] __pci_walk_bus+0x54/0xd4

[ 1262.637319] pci_walk_bus+0x10/0x18

[ 1262.640794] pcie_do_recovery+0x1a8/0x310

[ 1262.644787] aer_process_err_devices+0x184/0x18c

[ 1262.649386] aer_isr+0x180/0x1a8

[ 1262.652599] irq_thread_fn+0x28/0x88

[ 1262.656159] irq_thread+0x110/0x1fc

[ 1262.659632] kthread+0xd8/0xdc

[ 1262.662673] ret_from_fork+0x10/0x20

[ 1262.666237] Code: 8b234021 d50332bf b9000022 f9402c01 (b9400021)

[ 1262.672309] —[ end trace 0000000000000000 ]—

[ 1262.682354] pstore: backend (ramoops) writing error (-28)

[ 1262.687737] Kernel panic - not syncing: synchronous external abort: Fatal exception

[ 1262.695369] SMP: stopping secondary CPUs

[ 1262.699278] Kernel Offset: disabled

[ 1262.702750] CPU features: 0x0,00000000,00000000,1000400b

[ 1262.708043] Memory Limit: none

[ 1262.716361] Rebooting in 3 seconds…

F0: 102B 0000 FA: 1040 0000 FA: 1040 0000 [0200] F9: 0000 0000 V0: 0000 0000 [0001] 00: 0000 0000 BP: 2400 0041 [0000] G0: 1190 0000 EC: 0000 0000 [1000] T0: 0000 0218 [010F] Jump to BL

NOTICE: BL2: v2.10.0 (release):ImmortalWrt v2024.01.17~bacca82a-3 (mt7986-spim-nand-ubi-ddr4)

NOTICE: BL2: Built : 14:10:17, Oct 27 2025

NOTICE: WDT: [40000000] Software reset (reboot)

NOTICE: WDT: disabled

NOTICE: CPU: MT7986 (2000MHz)

NOTICE: EMI: Using DDR4 settings

NOTICE: EMI: Detected DRAM size: 2048MB

NOTICE: EMI: complex R/W mem test passed

NOTICE: SPI_NAND parses attributes from parameter page.

NOTICE: SPI_NAND Detected ID 0xef

NOTICE: Page size 2048, Block size 131072, size 134217728

NOTICE: UBI: scanning [0x200000 - 0x8000000] …

NOTICE: UBI: scanning is finished

NOTICE: UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes

NOTICE: UBI: VID header offset: 2048 (aligned 2048), data offset: 4096

NOTICE: UBI: Volume fip (Id #2) size is 1139377 bytes

NOTICE: BL2: Booting BL31

NOTICE: BL31: v2.10.0 (release):ImmortalWrt v2024.01.17~bacca82a-3 (mt7986-spim-nand-ubi- ddr4)

NOTICE: BL31: Built : 14:10:17, Oct 27 2025

U-Boot 2024.10-ImmortalWrt-r33602-e717d133ed6d (Oct 27 2025 - 14:10:17 +0000)

CPU: MediaTek MT7986

Model: Bananapi BPi-R3 Mini

DRAM: 2 GiB

Core: 54 devices, 23 uclasses, devicetree: embed

MMC: mmc@11230000: 0

Loading Environment from UBI… spi-nand: spi_nand spi_nand@0: Winbond SPI NAND was found.

spi-nand: spi_nand spi_nand@0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64

Read 126976 bytes from volume ubootenv to 00000000bf7c1c00

Read 126976 bytes from volume ubootenv2 to 00000000bf7e0c40 OK

In: serial@11002000

Out: serial@11002000

Err: serial@11002000

reset button found

Loading Environment from UBI… UBI partition ‘ubi’ already selected

Read 126976 bytes from volume ubootenv to 00000000bf7c1c00

Read 126976 bytes from volume ubootenv2 to 00000000bf7e0c40 OK

Net: Read 147456 bytes from volume en8811h-fw to 00000000bfb5d350

MD32 firmware version: 24082302

eth0: ethernet@15100000

    ( ( ( OpenWrt ) ) )  [SPI-NAND]       U-Boot 2024.10-ImmortalWrt-r33602-e717d133ed6d (Oct 2
  1. Run default boot command.
  2. Boot system via TFTP.
  3. Boot production system from NAND.
  4. Boot recovery system from NAND.
  5. Load production system via TFTP then write to NAND.
  6. Load recovery system via TFTP then write to NAND.
  7. Load Airoha EN8811H firmware via TFTP then write to NAND.
  8. Load BL31+U-Boot FIP via TFTP then write to NAND.
  9. Load BL2 preloader via TFTP then write to NAND.
  a. Reboot.
  b. Reset all settings to factory defaults.
  0. Exit

Press UP/DOWN to move, ENTER to select, ESC to quit LED ‘blue:status’ not found (err=-19)

LED ‘blue:status’ not found (err=-19)

LED ‘blue:status’ not found (err=-19)

LED ‘blue:status’ not found (err=-19)

LED ‘blue:status’ not found (err=-19)

Using ethernet@15100000 device

TFTP from server 192.168.1.254; our IP address is 192.168.1.1

Filename ‘immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-initramfs-recovery.itb’.

Load address: 0x46000000

Loading: T T ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################ 1.5 MiB/s done Bytes transferred = 25034752 (17e0000 hex)

Checking Image at 46000000 …

FIT image found

FIT description: ARM64 OpenWrt FIT (Flattened Image Tree)

Image 0 (kernel-1)

 Description:  ARM64 OpenWrt Linux-6.6.110

 Type:         Kernel Image

 Compression:  lzma compressed

 Data Start:   0x460000e8

 Data Size:    5685592 Bytes = 5.4 MiB

 Architecture: AArch64

 OS:           Linux

 Load Address: 0x44000000

 Entry Point:  0x44000000

 Hash algo:    crc32

 Hash value:   5214dfc8

 Hash algo:    sha1

 Hash value:   0ad606acae066ab61771e372e4fbe196faf21c48

Image 1 (initrd-1)

 Description:  ARM64 OpenWrt bananapi_bpi-r3-mini initrd

 Type:         RAMDisk Image

 Compression:  uncompressed

 Data Start:   0x4656c380

 Data Size:    19281820 Bytes = 18.4 MiB

 Architecture: AArch64

 OS:           Linux

 Load Address: unavailable

 Entry Point:  unavailable

 Hash algo:    crc32

 Hash value:   6fbef30e

 Hash algo:    sha1

 Hash value:   ca780acb164c3093aa50b0c4a5e0b34b2f293238

Image 2 (fdt-1)

 Description:  ARM64 OpenWrt bananapi_bpi-r3-mini device tree blob

 Type:         Flat Device Tree

 Compression:  uncompressed

 Data Start:   0x477cfc2c

 Data Size:    29378 Bytes = 28.7 KiB

 Architecture: AArch64

 Load Address: 0x43f00000

 Hash algo:    crc32

 Hash value:   6fd3d671

 Hash algo:    sha1

 Hash value:   4bc24d2d7042f6e98e00faca1ca6e54ea5c99db5

Default Configuration: 'config-mt7986a-bananapi-bpi-r3-mini'

Configuration 0 (config-mt7986a-bananapi-bpi-r3-mini)

 Description:  OpenWrt bananapi_bpi-r3-mini

 Kernel:       kernel-1

 Init Ramdisk: initrd-1

 FDT:          fdt-1

Checking hash(es) for FIT Image at 46000000 …

Hash(es) for Image 0 (kernel-1): crc32+ sha1+

Hash(es) for Image 1 (initrd-1): crc32+ sha1+

Hash(es) for Image 2 (fdt-1): crc32+ sha1+

Remove UBI volume rootfs_data (id 5)

Creating dynamic volume recovery of size 25034752

25034752 bytes written to volume recovery

Loading kernel from FIT Image at 46000000 …

Using ‘config-mt7986a-bananapi-bpi-r3-mini’ configuration

Trying ‘kernel-1’ kernel subimage

 Description:  ARM64 OpenWrt Linux-6.6.110

 Type:         Kernel Image

 Compression:  lzma compressed

 Data Start:   0x460000e8

 Data Size:    5685592 Bytes = 5.4 MiB

 Architecture: AArch64

 OS:           Linux

 Load Address: 0x44000000

 Entry Point:  0x44000000

 Hash algo:    crc32

 Hash value:   5214dfc8

 Hash algo:    sha1

 Hash value:   0ad606acae066ab61771e372e4fbe196faf21c48

Verifying Hash Integrity … crc32+ sha1+ OK

Loading ramdisk from FIT Image at 46000000 …

Using ‘config-mt7986a-bananapi-bpi-r3-mini’ configuration

Trying ‘initrd-1’ ramdisk subimage

 Description:  ARM64 OpenWrt bananapi_bpi-r3-mini initrd

 Type:         RAMDisk Image

 Compression:  uncompressed

 Data Start:   0x4656c380

 Data Size:    19281820 Bytes = 18.4 MiB

 Architecture: AArch64

 OS:           Linux

 Load Address: unavailable

 Entry Point:  unavailable

 Hash algo:    crc32

 Hash value:   6fbef30e

 Hash algo:    sha1

 Hash value:   ca780acb164c3093aa50b0c4a5e0b34b2f293238

Verifying Hash Integrity … crc32+ sha1+ OK

Loading fdt from FIT Image at 46000000 …

Using ‘config-mt7986a-bananapi-bpi-r3-mini’ configuration

Trying ‘fdt-1’ fdt subimage

 Description:  ARM64 OpenWrt bananapi_bpi-r3-mini device tree blob

 Type:         Flat Device Tree

 Compression:  uncompressed

 Data Start:   0x477cfc2c

 Data Size:    29378 Bytes = 28.7 KiB

 Architecture: AArch64

 Load Address: 0x43f00000

 Hash algo:    crc32

 Hash value:   6fd3d671

 Hash algo:    sha1

 Hash value:   4bc24d2d7042f6e98e00faca1ca6e54ea5c99db5

Verifying Hash Integrity … crc32+ sha1+ OK

Loading fdt from 0x477cfc2c to 0x43f00000

Booting using the fdt blob at 0x43f00000

Working FDT set to 43f00000

Uncompressing Kernel Image to 44000000

Loading Ramdisk to bd594000, end be7f779c … OK

Loading Device Tree to 00000000bd589000, end 00000000bd5932c1 … OK

Working FDT set to bd589000

Add ‘ramoops@42ff0000’ node failed: FDT_ERR_EXISTS

set /chosen/rootdisk to bootrom media: rootdisk-spim-nand (phandle 0x00000035)

Starting kernel …

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]

[ 0.000000] Linux version 6.6.110 ([email protected]) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r33602-e717d133ed6d) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 SMP Mon Oct 27 14:10:17 2025

[ 0.000000] Machine model: Bananapi BPi-R3 Mini

[ 0.000000] OF: reserved mem: 0x0000000042ff0000…0x0000000042ffffff (64 KiB) map non-reusable ramoops@42ff0000

[ 0.000000] OF: reserved mem: 0x0000000043000000…0x000000004302ffff (192 KiB) nomap non-reusable secmon@43000000

[ 0.000000] OF: reserved mem: 0x000000004fc00000…0x000000004fcfffff (1024 KiB) nomap non-reusable wmcpu-reserved@4fc00000

[ 0.000000] OF: reserved mem: 0x000000004fd00000…0x000000004fd3ffff (256 KiB) nomap non-reusable wo-emi@4fd00000

[ 0.000000] OF: reserved mem: 0x000000004fd40000…0x000000004fd7ffff (256 KiB) nomap non-reusable wo-emi@4fd40000

[ 0.000000] OF: reserved mem: 0x000000004fd80000…0x000000004ffbffff (2304 KiB) nomap non-reusable wo-data@4fd80000

[ 0.000000] Zone ranges:

[ 0.000000] DMA [mem 0x0000000040000000-0x00000000bfffffff]

[ 0.000000] DMA32 empty

[ 0.000000] Normal empty

[ 0.000000] Movable zone start for each node

[ 0.000000] Early memory node ranges

[ 0.000000] node 0: [mem 0x0000000040000000-0x0000000042ffffff]

[ 0.000000] node 0: [mem 0x0000000043000000-0x000000004302ffff]

[ 0.000000] node 0: [mem 0x0000000043030000-0x000000004fbfffff]

[ 0.000000] node 0: [mem 0x000000004fc00000-0x000000004ffbffff]

[ 0.000000] node 0: [mem 0x000000004ffc0000-0x00000000bfffffff]

[ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x00000000bfffffff]

[ 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: MIGRATE_INFO_TYPE not supported.

[ 0.000000] psci: SMC Calling Convention v1.4

[ 0.000000] percpu: Embedded 28 pages/cpu s74984 r8192 d31512 u114688

[ 0.000000] pcpu-alloc: s74984 r8192 d31512 u114688 alloc=28*4096

[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3

[ 0.000000] Detected VIPT I-cache on CPU0

[ 0.000000] CPU features: detected: GIC system register CPU interface

[ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration

[ 0.000000] alternatives: applying boot alternatives

[ 0.000000] Kernel command line: root=ubi.block=0,fit root=/dev/fit0 rootwait

[ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)

[ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)

[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516096

[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off

[ 0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 2MB

[ 0.000000] software IO TLB: area num 4.

[ 0.000000] software IO TLB: mapped [mem 0x00000000bf659000-0x00000000bf859000] (2MB)

[ 0.000000] Memory: 2012332K/2097152K available (9920K kernel code, 1574K rwdata, 6824K rodata, 512K init, 317K bss, 84820K reserved, 0K cma-reserved)

[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1

[ 0.000000] rcu: Hierarchical RCU implementation.

[ 0.000000] Tracing variant of Tasks RCU enabled.

[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.

[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0

[ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode

[ 0.000000] GICv3: 640 SPIs implemented

[ 0.000000] GICv3: 0 Extended SPIs implemented

[ 0.000000] Root IRQ handler: gic_handle_irq

[ 0.000000] GICv3: GICv3 features: 16 PPIs

[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x000000000c080000

[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.

[ 0.000000] arch_timer: cp15 timer(s) running at 13.00MHz (phys).

[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2ff89eacb, max_idle_ns: 440795202429 ns

[ 0.000000] sched_clock: 56 bits at 13MHz, resolution 76ns, wraps every 4398046511101ns

[ 0.000250] Calibrating delay loop (skipped), value calculated using timer frequency… 26.00 BogoMIPS (lpj=130000)

[ 0.000258] pid_max: default: 32768 minimum: 301

[ 0.002249] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)

[ 0.002261] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)

[ 0.003829] cacheinfo: Unable to detect cache hierarchy for CPU 0

[ 0.004219] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.

[ 0.004327] rcu: Hierarchical SRCU implementation.

[ 0.004330] rcu: Max phase no-delay instances is 1000.

[ 0.004762] smp: Bringing up secondary CPUs …

[ 0.005037] Detected VIPT I-cache on CPU1

[ 0.005074] GICv3: CPU1: found redistributor 1 region 0:0x000000000c0a0000

[ 0.005104] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]

[ 0.005417] Detected VIPT I-cache on CPU2

[ 0.005439] GICv3: CPU2: found redistributor 2 region 0:0x000000000c0c0000

[ 0.005451] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]

[ 0.005722] Detected VIPT I-cache on CPU3

[ 0.005740] GICv3: CPU3: found redistributor 3 region 0:0x000000000c0e0000

[ 0.005751] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]

[ 0.005779] smp: Brought up 1 node, 4 CPUs

[ 0.005782] SMP: Total of 4 processors activated.

[ 0.005785] CPU features: detected: 32-bit EL0 Support

[ 0.005787] CPU features: detected: CRC32 instructions

[ 0.005813] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching

[ 0.005815] CPU: All CPU(s) started at EL2

[ 0.005817] alternatives: applying system-wide alternatives

[ 0.008987] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns

[ 0.009004] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)

[ 0.009773] pinctrl core: initialized pinctrl subsystem

[ 0.010725] NET: Registered PF_NETLINK/PF_ROUTE protocol family

[ 0.010985] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations

[ 0.011024] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations

[ 0.011047] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations

[ 0.011352] thermal_sys: Registered thermal governor ‘fair_share’

[ 0.011355] thermal_sys: Registered thermal governor ‘bang_bang’ [ 0.011357] thermal_sys: Registered thermal governor ‘step_wise’

[ 0.011359] thermal_sys: Registered thermal governor ‘user_space’

[ 0.011412] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.

[ 0.011451] ASID allocator initialised with 65536 entries

[ 0.012228] pstore: Using crash dump compression: deflate

[ 0.012232] pstore: Registered ramoops as persistent store backend

[ 0.012234] ramoops: using 0x10000@0x42ff0000, ecc: 0

[ 0.013441] /soc/interrupt-controller@c000000: Fixed dependency cycle(s) with /soc/interrupt- controller@c000000

[ 0.019039] Modules: 27952 pages in range for non-PLT usage

[ 0.019048] Modules: 519472 pages in range for PLT usage

[ 0.020093] cryptd: max_cpu_qlen set to 1000

[ 0.020969] SCSI subsystem initialized

[ 0.021054] libata version 3.00 loaded.

[ 0.022265] clocksource: Switched to clocksource arch_sys_counter

[ 0.023982] NET: Registered PF_INET protocol family

[ 0.024107] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)

[ 0.025684] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)

[ 0.025704] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)

[ 0.025711] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)

[ 0.025780] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)

[ 0.026168] TCP: Hash tables configured (established 16384 bind 16384)

[ 0.026466] MPTCP token hash table entries: 2048 (order: 3, 49152 bytes, linear)

[ 0.026578] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)

[ 0.026605] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)

[ 0.026790] NET: Registered PF_UNIX/PF_LOCAL protocol family

[ 0.026807] NET: Registered PF_XDP protocol family

[ 0.026816] PCI: CLS 0 bytes, default 64

[ 0.026950] Unpacking initramfs…

[ 0.043619] workingset: timestamp_bits=46 max_order=19 bucket_order=0

[ 0.047020] squashfs: version 4.0 (2009/01/31) Phillip Lougher

[ 0.047030] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001- 2006 Red Hat, Inc.

[ 0.085070] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)

[ 0.086727] mtk-pcie-gen3 11280000.pcie: host bridge /soc/pcie@11280000 ranges:

[ 0.086746] mtk-pcie-gen3 11280000.pcie: Parsing ranges property…

[ 0.086755] mtk-pcie-gen3 11280000.pcie: MEM 0x0020000000…0x002fffffff → 0x0020000000

[ 0.086875] /soc/pcie@11280000: Failed to get clk index: 0 ret: -517

[ 0.086884] mtk-pcie-gen3 11280000.pcie: failed to get clocks

[ 0.089808] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled

[ 0.092291] printk: console [ttyS0] disabled

[ 0.112601] 11002000.serial: ttyS0 at MMIO 0x11002000 (irq = 116, base_baud = 2500000) is a ST16650V2

[ 0.112650] printk: console [ttyS0] enabled

[ 0.975187] 11003000.serial: ttyS1 at MMIO 0x11003000 (irq = 117, base_baud = 1625000) is a ST16650V2

[ 0.985217] mtk_rng 1020f000.rng: registered RNG driver

[ 0.993406] loop: module loaded

[ 0.998430] spi-nand spi0.0: Winbond SPI NAND was found.

[ 1.003759] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64

[ 3.693534] Freeing initrd memory: 18828K

[ 3.708711] 2 fixed-partitions partitions found on MTD device spi0.0

[ 3.715324] Creating 2 MTD partitions on “spi0.0”:

[ 3.720102] 0x000000000000-0x000000200000 : “bl2”

[ 3.726472] 0x000000200000-0x000008000000 : “ubi”

[ 3.816054] ubi0: default fastmap pool size: 50

[ 3.820594] ubi0: default fastmap WL pool size: 25

[ 3.825380] ubi0: attaching mtd1

[ 4.481000] ubi0: scanning is finished

[ 4.492896] ubi0: attached mtd1 (name “ubi”, size 126 MiB)

[ 4.498380] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes

[ 4.505243] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048

[ 4.512009] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096

[ 4.518951] ubi0: good PEBs: 1008, bad PEBs: 0, corrupted PEBs: 0

[ 4.525027] ubi0: user volume: 6, internal volumes: 1, max. volumes count: 128

[ 4.532226] ubi0: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 1761574217

[ 4.541335] ubi0: available PEBs: 520, total reserved PEBs: 488, PEBs reserved for bad PEB handling: 20

[ 4.550709] ubi0: background thread “ubi_bgt0d” started, PID 289

[ 4.551492] block ubiblock0_4: created from ubi0:4(fit)

[ 4.815151] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc086080000, irq 121

[ 4.824933] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc086080000, irq 121

[ 4.834647] i2c_dev: i2c /dev entries driver

[ 4.840980] mtk-wdt 1001c000.watchdog: Watchdog enabled (timeout=31 sec, nowayout=0)

[ 4.873139] NET: Registered PF_INET6 protocol family

[ 4.878699] Segment Routing with IPv6

[ 4.882403] In-situ OAM (IOAM) with IPv6

[ 4.886349] NET: Registered PF_PACKET protocol family

[ 4.891418] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

[ 4.904477] 8021q: 802.1Q VLAN Support v1.8

[ 4.922004] mtk-pcie-gen3 11280000.pcie: host bridge /soc/pcie@11280000 ranges:

[ 4.929358] mtk-pcie-gen3 11280000.pcie: Parsing ranges property…

[ 4.935631] mtk-pcie-gen3 11280000.pcie: MEM 0x0020000000…0x002fffffff → 0x0020000000

[ 4.944101] debugfs: File ‘type’ in directory ‘phy-soc:[email protected]’ already present!

[ 4.952263] debugfs: File ‘efuse’ in directory ‘phy-soc:[email protected]’ already present!

[ 4.960503] debugfs: File ‘intr’ in directory ‘phy-soc:[email protected]’ already present!

[ 4.968663] debugfs: File ‘tx-imp’ in directory ‘phy-soc:[email protected]’ already present!

[ 4.976993] debugfs: File ‘rx-imp’ in directory ‘phy-soc:[email protected]’ already present!

[ 5.004681] mtk-msdc 11230000.mmc: Final PAD_DS_TUNE: 0x14414

[ 5.011589] mmc0: new HS400 MMC card at address 0001

[ 5.017345] mmcblk0: mmc0:0001 008GB0 7.28 GiB

[ 5.023564] mmcblk0boot0: mmc0:0001 008GB0 4.00 MiB

[ 5.029251] mmcblk0boot1: mmc0:0001 008GB0 4.00 MiB

[ 5.034539] mmcblk0rpmb: mmc0:0001 008GB0 4.00 MiB, chardev (249:0)

[ 5.322277] mtk-pcie-gen3 11280000.pcie: PCIe link down, current LTSSM state: detect.quiet (0x1)

[ 5.331080] mtk-pcie-gen3: probe of 11280000.pcie failed with error -110

[ 5.338940] FIT: Detected U-Boot 2024.10-ImmortalWrt-r33602-e717d133ed6d

[ 5.345645] FIT: Selected configuration: “config-mt7986a-bananapi-bpi-r3-mini” (OpenWrt bananapi_bpi-r3-mini)

[ 5.355545] FIT: kernel sub-image 0x00001000…0x007875e7 “kernel-1” (ARM64 OpenWrt Linux-6.6.110)

[ 5.365358] FIT: flat_dt sub-image 0x00788000…0x0078f2c1 “fdt-1” (ARM64 OpenWrt bananapi_bpi-r3-mini device tree blob)

[ 5.376989] FIT: filesystem sub-image 0x00790000…0x01c57fff “rootfs-1” (ARM64 OpenWrt bananapi_bpi-r3-mini rootfs)

[ 5.388347] block ubiblock0_4: mapped 1 uImage.FIT filesystem sub-image as /dev/fit0

[ 5.396322] clk: Disabling unused clocks

[ 5.400792] Freeing unused kernel memory: 512K

[ 5.405259] Run /init as init process

[ 5.408905] with arguments:

[ 5.411856] /init

[ 5.414119] with environment:

[ 5.417244] HOME=/

[ 5.419587] TERM=linux

[ 5.813575] init: Console is alive

[ 5.817076] init: - watchdog -

[ 5.827417] kmodloader: loading kernel modules from /etc/modules-boot.d/*

[ 5.835265] Kernel module BTF mismatch detected, BTF debug info may be unavailable for some modules

[ 8.036644] Airoha EN8811H mdio-bus:0e: MD32 firmware version: 24082302

[ 10.236243] Airoha EN8811H mdio-bus:0f: MD32 firmware version: 24082302

[ 10.252192] usbcore: registered new interface driver usbfs

[ 10.257729] usbcore: registered new interface driver hub

[ 10.263061] usbcore: registered new device driver usb

[ 10.271987] gpio_button_hotplug: loading out-of-tree module taints kernel.

[ 10.285190] xhci-mtk 11200000.usb: xHCI Host Controller

[ 10.290424] xhci-mtk 11200000.usb: new USB bus registered, assigned bus number 1

[ 10.300889] xhci-mtk 11200000.usb: hcc params 0x01403f99 hci version 0x110 quirks 0x0000000000200010

[ 10.310047] xhci-mtk 11200000.usb: irq 127, io mem 0x11200000

[ 10.315884] xhci-mtk 11200000.usb: xHCI Host Controller

[ 10.321097] xhci-mtk 11200000.usb: new USB bus registered, assigned bus number 2

[ 10.328490] xhci-mtk 11200000.usb: Host supports USB 3.2 Enhanced SuperSpeed

[ 10.335928] hub 1-0:1.0: USB hub found

[ 10.339686] hub 1-0:1.0: 2 ports detected

[ 10.343991] usb usb2: We don’t know the algorithms for LPM for this host, disabling LPM.

[ 10.352359] hub 2-0:1.0: USB hub found

[ 10.356121] hub 2-0:1.0: 1 port detected

[ 10.365093] usbcore: registered new interface driver usb-storage

[ 10.371946] usbcore: registered new interface driver uas

[ 10.377473] kmodloader: done loading kernel modules from /etc/modules-boot.d/*

[ 10.387392] init: - preinit -

[ 10.504786] mtk_soc_eth 15100000.ethernet eth0: PHY [mdio-bus:0e] driver [Airoha EN8811H] (irq=63)

[ 10.517160] mtk_soc_eth 15100000.ethernet eth0: configuring for phy/2500base-x link mode

[ 10.655263] mtk_soc_eth 15100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx

[ 10.802266] usb 1-1: new high-speed USB device number 2 using xhci-mtk

[ 10.852270] random: crng init done

Press the [f] key and hit [enter] to enter fails[ 10.994901] usb-storage 1-1:1.0: USB Mass Storage device detected afe mode Press [ 11.002619] scsi host0: usb-storage 1-1:1.0 the [1], [2], [3] or [4] key and hit [enter] to select the debug level

[ 12.052387] usb 2-1: new SuperSpeed USB device number 2 using xhci-mtk

[ 12.083093] scsi 0:0:0:0: Direct-Access USB SanDisk 3.2Gen1 1.00 PQ: 0 ANSI: 6

[ 12.084216] usb 2-1: LPM exit latency is zeroed, disabling LPM.

[ 12.098564] sd 0:0:0:0: [sda] 30031872 512-byte logical blocks: (15.4 GB/14.3 GiB)

[ 12.106987] sd 0:0:0:0: [sda] Write Protect is off

[ 12.111763] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00

[ 12.117141] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn’t support DPO or FUA

[ 12.129801] sda: sda1

[ 12.132329] sd 0:0:0:0: [sda] Attached SCSI removable disk

[ 15.116564] procd: - early -

[ 15.119493] procd: - watchdog -

Failed to connect to ubus

[ 15.638274] procd: - watchdog -

[ 15.641552] procd: - ubus -

[ 15.696171] procd: - init - Please press Enter to activate this console.

[ 15.845011] kmodloader: loading kernel modules from /etc/modules.d/*

[ 15.857827] NET: Registered PF_ALG protocol family

[ 15.870189] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver

[ 15.879811] cryptodev: driver 1.13 loaded.

[ 15.886150] GACT probability on

[ 15.890001] Mirror/redirect action on

[ 15.897127] u32 classifier

[ 15.899834] input device check on

[ 15.903559] Actions configured

[ 15.914136] ntfs3: Enabled Linux POSIX ACLs support

[ 15.921054] crypto-safexcel 10320000.crypto: EIP97:230(0,1,4,4)- HIA:270(0,5,5),PE:150/433(alg:7fcdfc00)/0/0/0

[ 15.936928] Loading modules backported from Linux version v6.12.52-0-g2b2cbdcede38

[ 15.940113] urngd: v1.0.2 started.

[ 15.944499] Backport generated by backports.git v6.1.110-1-35-g410656ef

[ 15.960916] usbcore: registered new interface driver ums-alauda

[ 15.967705] usbcore: registered new interface driver ums-cypress

[ 15.974610] usbcore: registered new interface driver ums-datafab

[ 15.981477] usbcore: registered new interface driver ums-freecom

[ 15.988531] usbcore: registered new interface driver ums-isd200

[ 15.995293] usbcore: registered new interface driver ums-jumpshot

[ 16.002129] usbcore: registered new interface driver ums-karma

[ 16.008874] usbcore: registered new interface driver ums-sddr09

[ 16.015635] usbcore: registered new interface driver ums-sddr55

[ 16.022373] usbcore: registered new interface driver ums-usbat

[ 16.031193] usbcore: registered new interface driver usbserial_generic

[ 16.037769] usbserial: USB Serial support registered for generic

[ 16.044668] usbcore: registered new interface driver cdc_ether

[ 16.094466] mt798x-wmac 18000000.wifi: attaching wed device 0 version 2

[ 16.106451] platform 15010000.wed: MTK WED WO Firmware Version: DEV_000000, Build Time: 20221012175005 [ 16.115798] platform 15010000.wed: MTK WED WO Chip ID 00 Region 3

[ 16.632746] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20240823160656a

[ 16.632746]

[ 16.650450] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20240823160721

[ 16.689765] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20240823160840

[ 16.795506] mt798x-wmac 18000000.wifi: registering led ‘mt76-phy0’

[ 16.843324] mt798x-wmac 18000000.wifi: registering led ‘mt76-phy1’

[ 16.907758] missing module BTF, cannot register kfuncs

[ 16.912907] missing module BTF, cannot register kfuncs

[ 16.929152] missing module BTF, cannot register kfuncs

[ 16.934320] missing module BTF, cannot register kfuncs

[ 16.959386] PPP generic driver version 2.4.2

[ 16.964575] PPP MPPE Compression module registered

[ 16.970138] NET: Registered PF_PPPOX protocol family

[ 16.976543] usbcore: registered new interface driver rndis_host

[ 16.985893] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.

[ 16.993767] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld [email protected]. All

Rights Reserved.

[ 17.005451] usbcore: registered new interface driver option

[ 17.011071] usbserial: USB Serial support registered for GSM modem (1-port)

[ 17.018199] option 2-1:1.0: GSM modem (1-port) converter detected

[ 17.024514] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0

[ 17.031485] option 2-1:1.1: GSM modem (1-port) converter detected

[ 17.037767] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1

[ 17.044752] option 2-1:1.2: GSM modem (1-port) converter detected

[ 17.051053] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2

[ 17.058030] option 2-1:1.3: GSM modem (1-port) converter detected

[ 17.064310] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3

[ 17.072995] kmodloader: done loading kernel modules from /etc/modules.d/*

[ 20.335507] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

[ 20.598175] bridger[2760]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set

[ 23.014500] mtk_soc_eth 15100000.ethernet eth0: Link is Down

[ 23.135527] mtk_soc_eth 15100000.ethernet eth0: PHY [mdio-bus:0e] driver [Airoha EN8811H] (irq=63)

[ 23.148572] mtk_soc_eth 15100000.ethernet eth0: configuring for phy/2500base-x link mode

[ 23.158047] br-lan: port 1(eth0) entered blocking state

[ 23.163344] br-lan: port 1(eth0) entered disabled state

[ 23.168603] mtk_soc_eth 15100000.ethernet eth0: entered allmulticast mode

[ 23.175642] mtk_soc_eth 15100000.ethernet eth0: entered promiscuous mode

[ 24.864362] br-lan: port 2(phy1-ap0) entered blocking state

[ 24.869944] br-lan: port 2(phy1-ap0) entered disabled state

[ 24.875647] mt798x-wmac 18000000.wifi phy1-ap0: entered allmulticast mode

[ 24.882693] mt798x-wmac 18000000.wifi phy1-ap0: entered promiscuous mode

[ 24.889561] br-lan: port 2(phy1-ap0) entered blocking state

[ 24.895182] br-lan: port 2(phy1-ap0) entered forwarding state

[ 24.970823] br-lan: port 3(phy0-ap0) entered blocking state

[ 24.976495] br-lan: port 3(phy0-ap0) entered disabled state

[ 24.982123] mt798x-wmac 18000000.wifi phy0-ap0: entered allmulticast mode

[ 24.989182] mt798x-wmac 18000000.wifi phy0-ap0: entered promiscuous mode

[ 24.996126] br-lan: port 3(phy0-ap0) entered blocking state

[ 25.001704] br-lan: port 3(phy0-ap0) entered forwarding state

[ 25.083035] br-lan: port 2(phy1-ap0) entered disabled state

[ 25.089342] br-lan: port 3(phy0-ap0) entered disabled state

[ 27.045279] mtk_soc_eth 15100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx

[ 27.045883] br-lan: port 1(eth0) entered blocking state

[ 27.058927] br-lan: port 1(eth0) entered forwarding state

[ 35.620207] br-lan: port 3(phy0-ap0) entered blocking state

[ 35.625795] br-lan: port 3(phy0-ap0) entered forwarding state

[BPi-R3 Mini] PCIe / NVMe causes AER fatal error and kernel panic on MT7986 (6.6.110)

Board: Banana Pi BPi-R3 Mini SoC: MediaTek MT7986 Boot medium: SPI-NAND (UBI) Firmware: ImmortalWrt 2024.01 Kernel: Linux 6.6.110 PCIe device: NVMe SSD (PCIe Gen3 x1 via onboard slot)


Problem Summary

When an NVMe device is detected on the PCIe bus, the system initially enumerates correctly, but shortly after:

  • PCIe AER errors are reported (RxErr → SDES)
  • The NVMe controller enters frozen state
  • PCIe recovery triggers MSI IRQ teardown
  • Kernel crashes with a synchronous external abort
  • System reboots

This is 100% reproducible.


Observed Behavior

  1. PCIe link comes up and NVMe enumerates:
nvme 0000:01:00.0: enabling device
nvme nvme0: allocated 64 MiB host memory buffer
nvme nvme0: 4/0/0 default/read/poll queues
nvme0n1: p1 p2 p3 p4
  1. PCIe AER errors appear:
PCIe Bus Error: severity=Corrected, type=Physical Layer, RxErr
PCIe Bus Error: severity=Uncorrected (Fatal), type=Transaction Layer, SDES
  1. NVMe enters frozen state:
nvme nvme0: frozen state error detected, reset controller
  1. Kernel panic:
Internal error: synchronous external abort
pc : pci_msi_mask_irq
lr : mtk_pcie_msi_irq_mask
  1. System reboots via watchdog.

Key Call Trace

pci_msi_mask_irq
mtk_pcie_msi_irq_mask
free_irq
pci_free_irq
report_error_detected
pcie_do_recovery
aer_process_err_devices

This suggests MSI teardown during PCIe AER recovery is unsafe on MT7986.


Additional Notes

  • PCIe later reports:
mtk-pcie-gen3: PCIe link down, LTSSM detect.quiet
probe failed with error -110
  • This happens after successful enumeration.
  • USB, Ethernet, Wi-Fi are stable.
  • Issue is isolated to PCIe/NVMe path.

Hypotheses

One or more of the following may be true:

  1. MT7986 PCIe Gen3 controller bug during AER recovery
  2. MSI handling race in mtk_pcie_msi_irq_mask()
  3. PCIe link power management / ASPM instability
  4. NVMe HMB (Host Memory Buffer) triggering invalid DMA
  5. Missing or incorrect clock / reset handling for PCIe in DT

Questions for Maintainers

  1. Is PCIe AER officially supported on MT7986?
  2. Should AER be disabled on this platform?
  3. Are there known stable kernel versions for PCIe + NVMe on BPi-R3 Mini?
  4. Is there a recommended DT or kernel config for PCIe Gen3 reliability?
  5. Has anyone tested forcing Gen2 or disabling MSI / ASPM?

Where is the output of the above command?

If you are convinced this is the problem, you should ask the guys from immortalwrt?

1 Like