CM4: TenaFe TC2200 NVMe controller (Kingston NV2) fails PCIe link training on warm reboot

Open
#7,217 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
c, linux

Research direction

Start by reproducing the warm-reboot failure on the CM4 with the Kingston NV2, then compare lspci and dmesg output with a cold boot. Trace the brcm-pcie fd500000.pcie host-controller path and the reported link-down state. Done means the PCIe link trains after a soft reboot and the NVMe device becomes available without a hard power cycle.

Written by the indexing model from the issue text.

Description

Describe the bug

TC2200-based NVMe drive fails to reinitialize after soft reboot (reboot command). PCIe link does not come up, requiring hard power cycle to recover.

After failed reboot:

  • lspci returns no output (no PCIe devices detected)
  • /dev/nvme* devices do not exist
  • PCIe link is completely down
Steps to reproduce the behaviour
  1. Boot system normally (cold boot) - works fine
  2. Execute reboot command
  3. System attempts to reboot but NVMe is not detected
  4. PCIe link shows as down in dmesg
  5. Hard power cycle required to restore functionality; luckily this box is PoE-based.
Device (s)

Raspberry Pi CM4

System

This is a HAOS install, but this issue is not specific to their distro and I don't think they have the vendor connections necessary to follow-up to see if a TenaFe/Kingston firmware revision can resolve this or do the engineering of a quirk to workaround it in the kernel.

raspinfo | pastebinit

-sh: raspinfo: not found
-sh: pastebinit: not found

cat /etc/rpi-issue

cat: can't open '/etc/rpi-issue': No such file or directory

vcgencmd version

Aug 20 2025 17:02:31
Copyright (c) 2012 Broadcom
version cd866525580337c0aee4b25880e1f5f9f674fb24 (clean) (release) (start)

uname -a

Linux homeassistant 6.12.47-haos-raspi #1 SMP PREEMPT Mon Jan 19 12:17:38 UTC 2026 aarch64 HAOS

Logs

[ 0.534757] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[ 0.534777] brcm-pcie fd500000.pcie: No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[ 0.534800] brcm-pcie fd500000.pcie: MEM 0x0600000000..0x063fffffff -> 0x00c0000000
[ 0.534821] brcm-pcie fd500000.pcie: IB MEM 0x0000000000..0x01ffffffff -> 0x0400000000
[ 0.535628] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[ 0.535645] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.535655] pci_bus 0000:00: root bus resource [mem 0x600000000-0x63fffffff] (bus address [0xc0000000-0xffffffff])
[ 0.535700] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400 PCIe Root Port
[ 0.537334] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 0.537400] pci_bus 0000:01: supply vpcie3v3 not found, using dummy regulator
[ 0.537470] pci_bus 0000:01: supply vpcie3v3aux not found, using dummy regulator
[ 0.537499] pci_bus 0000:01: supply vpcie12v not found, using dummy regulator
[ 0.879804] brcm-pcie fd500000.pcie: link down
[ 0.879904] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01

Additional context

Platform: Raspberry Pi Compute Module 4 Rev 1.1 in a Home Assistant Yellow
NVMe Drive: Kingston SNV2S1000G (NV2 1TB)
Controller: TenaFe TC2200 (PCI ID: 2646:501d)
Firmware: CBG04418
Boot Config: BOOT_ORDER=0xf2561 (NVMe boot mode 6 already included)

Note that Kingston's Windows-only KSM app doesn't seem to have any firmware updates to offer for this revision.

Dominant language
C
Stars
13.2k
Forks
5.5k
Avg merge
2d 21h
Merged PRs (30d)
21

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raspberrypi/linux

All issues in raspberrypi/linux

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.