[Orange Pi RV / JH7110] PCIe PHY probe deferred — `19820000.phy` sync_state never resolves when booting to NVMe rootfs

Board: Xunlong Orange Pi RV (StarFive JH7110, 8GB)
Goal: Fedora 43 riscv64 on NVMe via OpenSBI + mainline U-Boot v2026.01 (EFI) + systemd-boot + BLS

The board has no mainline DTS in 6.18, so I authored one from the VF2 v1.3B DTS as template and the decompiled vendor DTB as hardware ground truth. U-Boot EEPROM matching needed a two-part patch to spl.c to prevent the VF2 v1.3B entry (7-char match) from shadowing the Orange Pi RV entry (13-char match on VF7110B1-2228) — that is resolved and working.

Boot chain target:

SPI NOR → U-Boot SPL → OpenSBI fw_dynamic → U-Boot proper (Orange Pi RV DTB)
  → bootefi → systemd-boot → kernel 6.18.0 + jh7110-orangepi-rv.dtb → Fedora 43 rootfs on nvme0n1p2

U-Boot, OpenSBI, kernel handoff, DRAM, serial, ethernet, MMC, and systemd are all working. The kernel boots cleanly into Fedora 43 userspace when the rootfs is on the SD card. The remaining blocker is PCIe — which lives entirely in the kernel, not in U-Boot.


The problem

Kernel never initializes PCIe. At the 10-second deferred-probe deadline:

jh71xx-pmu 17010000.syscon: sync_state() pending due to 19820000.phy
jh71xx-pmu 17030000.power-controller: sync_state() pending due to 19810000.clock-controller
jh71xx-pmu 17030000.power-controller: sync_state() pending due to 295c0000.clock-controller
platform 16050000.dma-controller: deferred probe pending: (reason unknown)

No pcie-starfive lines appear at all. The PHY at 19820000 never probes, the power domain never satisfies sync_state, and the PCIe controllers (940000000.pcie, 9c0000000.pcie) never initialize.


What I know

PCIe works — confirmed in two scenarios:

  1. The initial successful boot (Mar 03, anomalous): U-Boot was inadvertently running the VF2 DTB for itself but passing the Orange Pi RV DTB to the kernel via fdtfile. PCIe came up fully, NVMe enumerated correctly. Not reproducible since U-Boot was corrected.

  2. Boot to SD card rootfs (root=/dev/mmcblk1p2) with the same kernel, same DTB, same U-Boot sequence: PCIe comes up fully and NVMe is visible alongside the SD card. Reproducible.

PCIe fails when the kernel command line targets NVMe rootfs (root=/dev/nvme0n1p2) — same kernel, same DTB, same U-Boot.

The root= target should not affect PCIe initialization. I’m aware that root=/dev/nvme0n1p2 causes the kernel to hold at Waiting for root device which keeps the initcall machinery running longer — but the deferred probe timeout is fixed at 10 seconds regardless, and the PHY never appears in dmesg even before the timeout fires.


Attempts made

What I tried Result
Remove SD card entirely PCIe still fails
Replace bootefi bootmgr with direct bootefi addr addr Still fails
Remove nvme scan from bootcmd Still fails
sleep 5 before kernel load Still fails
pci enum at U-Boot prompt before booting Still fails
Manual boot sequence (same commands as bootcmd, typed interactively) Still fails
Boot to SD card rootfs, otherwise identical PCIe works :white_check_mark:

The question

What does the 19820000.phy (PCIe PHY) require from the DTS power/clock domain graph that the VF2 DTS satisfies and my Orange Pi RV DTS may not? The VF2 DTS and my DTS use the same jh7110-common.dtsi include — the PCIe nodes, PHY bindings, clock/reset references, and power domains are structurally identical to my eye. The AXP15060 PMIC is detected and initialized on every boot; I suspect the difference may be in how PCIe power rails are described relative to the PMIC, but I haven’t found it.

DTS posted as a gist for reference (no upstream ambitions yet — sharing for diagnosis): gist:4c0eba65e4c86ed627df34befd4f5765 · GitHub

Any pointer to what the probe framework needs to see in the DTS to let 19820000.phy satisfy sync_state is what I’m after.

I am a new user to this forum. I consider myself an experienced user not a developer. I selected this forum as it seemed an active Fedora centric community. I took some care that my first post to this forum completely represented my question and tried to identify the tag representing my specific focus. I am making an effort to biuld a fedora 43 image that will run on an Orange PI RV. The post has been up for several days now with no response. Please provide some feedback. 1) am I correct that this forum is Fedora focused 2) was my selection of the risc-v-sig an appropriate tag 3) is there a better tag for this question 4) is there anybody there?

I believe the board was added in v6.19 kernel [0] and the DT seems to be in the master branch [1].

Our latest image ( Fedora-Server-Host-Generic-43-20260218.0 : Fedora-Server-Host-Generic-43-20260218.0 | Build Info | koji ) seems to include v6.19.2. You might give it a try.

We are mostly active on the Matrix ( https://matrix.to/#/#riscv:fedoraproject.org ). You might join and ask if someone has this board.

[0] Making sure you're not a bot!

[1] linux/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts at master · torvalds/linux · GitHub

Thanks for the pointer to the upstream DTS and the Fedora image reference — both were useful starting points.

Looking at the mainline DTS (jh7110-orangepi-rv.dts landed post-v6.19 tag) and the Fedora-Server-Host-Generic-43-20260218.0 koji build confirmed the direction. The NVMe rootfs boot issue is now resolved.

The root cause was kernel config, not kernel version. Two drivers needed to be built-in (=y) rather than modules (=m) for a no-initrd boot with NVMe rootfs:

  • CONFIG_PCIE_STARFIVE_HOST — PCIe host controller driver
  • CONFIG_CLK_STARFIVE_JH7110_STG — STG clock, which PCIe depends on at probe time

With those set to =y in a source-built 6.19 kernel, the Orange Pi RV boots autonomously from NVMe rootfs with no SD card and no manual intervention. Boot chain is OpenSBI + U-Boot v2026.01 + direct bootefi (no initrd).

The implication is that the Fedora 43 koji kernel may already work on this board if those options are built-in — worth checking before building from source. That path hasn’t been verified yet.

Will follow up as the integration work continues. Thanks again.