openwrt / openwrt/openwrt

NVMEM core perpetual -EPROBE_DEFER blocks fallback mechanisms, bricking network/PCIe

Open
#22,858 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
28.5k
Forks
13k
PR merge metrics
PR metrics pending

Description

Description
When an underlying NVMEM provider (e.g., a SPI/NAND flash driver) fails to probe, nvmem_cell_get() perpetually returns -EPROBE_DEFER. This traps consumer drivers—such as Ethernet drivers fetching a MAC address or PHY drivers fetching calibration data—in an endless deferred probe loop.

Because the NVMEM core never returns a definitive error code (like -ENODEV), the consumer drivers are never allowed to trigger their built-in fallback routines (e.g., calling eth_hw_addr_random() for a random MAC). As a result, the devices remain completely non-functional, effectively bricking the network and PCIe interfaces just because the flash driver failed.

Symptoms / Logs
During boot, consumers remain indefinitely in the deferred probe pending list, and the interfaces never come up:

[   18.407677] platform 15100000.ethernet: deferred probe pending: (reason unknown)
[   18.415080] pci 0000:01:00.0: deferred probe pending: (reason unknown)

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.

Research direction

Start by tracing the nvmem_cell_get() return path when an underlying provider fails, then inspect the Ethernet and PHY consumer paths that fetch MAC or calibration data. Use the deferred-probe logs as the reproduction signal; done means a failed provider no longer leaves consumers indefinitely pending and their documented fallback routines can run.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
embedded-iot, networking, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.