惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
I
InfoQ
The Register - Security
The Register - Security
L
LangChain Blog
H
Help Net Security
The GitHub Blog
The GitHub Blog
S
Schneier on Security
博客园 - 【当耐特】
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Y
Y Combinator Blog
雷峰网
雷峰网
N
Netflix TechBlog - Medium
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Visual Studio Blog
博客园 - 聂微东
PCI Perspectives
PCI Perspectives
Last Week in AI
Last Week in AI
A
Arctic Wolf
宝玉的分享
宝玉的分享
T
The Blog of Author Tim Ferriss
S
Secure Thoughts
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
SegmentFault 最新的问题
SecWiki News
SecWiki News
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
Schneier on Security
Schneier on Security
P
Proofpoint News Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AI
AI
Engineering at Meta
Engineering at Meta

博客园 - yooooooo

ftraceoption irq-info MPAM BE/ FE 的区别及功能 IPI与CPU唤醒机制 【ARM CoreLink 系列 5 -- CI-700 控制器介绍 】 ARM CoreLink 系列 4.3 -- NI-700 Component and interface identifiers ARM CCI-500 与 NI0700 的关系. ARM NIC-400 与 NI-700 的区别 claude code命令使用 【ARM Trace32(劳特巴赫) 使用介绍 2.2 -- TRACE32 进阶命令之 DIAG 弹框命令】 trace32 .cmm脚本和.t32文件的区别 【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】 【ARM Trace32(劳特巴赫) 使用介绍 1.1 - Veloce 环境中使用trace32 连接 Cortex-M33】 PCIe 总线的 ASPM 和 链路状态机制总结 I3C协议详解 UART 协议规范 BPF 调度器 sched_ext 实现机制、调度流程及样例 Android Camera性能分析 录像Buffer Path详解 【UEFI基础】Protocol介绍 【UEFI实战】在库中使用全局变量 sched feature TTWU_QUEUE 【ARM CoreLink 系列 4.2 -- NI-700 Function units 详细介绍】 edk2构建编译流程 UEFI:FDF文件及FD、FV、FFS EDK II PCD的概念、类型、使用 PELT算法浅析 load_balance函数代码详解 UEFI Boot Manager Linux misfit task Linux 内核中sched_prio_to_weight转换关系 CFS任务放置代码详解 CFS任务的负载均衡(load balance)
fw_devlink 功能
yooooooo · 2026-03-07 · via 博客园 - yooooooo
  • fw_devlinkLinux 驱动核心(driver core)的一套机制:从固件描述(主要是 Device Tree,部分场景也可用于 ACPI/fwnode 体系)中“推导设备依赖关系”,并自动建立“consumer↔supplier”的依赖链接,用来管理probe 顺序以及与之相关的一些 PM/同步状态语义。
  • 它的核心目标是:让依赖设备(supplier,例如 regulator/clock/phy/iommu 等)优先 probe,再让使用者设备(consumer)probe,从而减少“因为依赖未就绪导致的无限 defer probe/随机探测顺序问题”。
  • 该机制不依赖具体驱动实现来“告诉内核依赖关系”,而是由内核在早期直接解析固件(DT)来构建依赖图,因此在“全模块化内核、驱动加载顺序不确定”的情况下也能工作。
  • 内核启动早期,fw_devlink解析固件(DT)中的依赖属性,识别出“谁依赖谁”(consumer→supplier)的关系,并先建立 fwnode links(固件节点之间的链接)。
  • 目前 DT 侧它支持的依赖来源包括但不限于:clockspower-domainsphysiommusinterconnectspinctrl-**-supply(regulator)以及 *-gpio(s) 等等(演进中,文档/演讲中列出了多类属性)。
  • 当这些 DT 节点对应的 struct device 逐步创建出来后,前面建立的 fwnode links 会被转换为 device links(设备之间的链接)。
  • 一旦形成 device links,驱动核心就可以据此强制/影响 probe 顺序:fw_devlink 的目标之一就是“保证 supplier 会在 consumer 之前 probe”。
  • 它还能减少“initcall 顺序鸡生蛋问题”:驱动的 initcall level 变得不再关键,不需要靠“调 initcall 等级”去抢先注册 supplier 驱动。

fw_devlink 支持多种工作模式(内核命令行参数),常见含义如下:

  • fw_devlink=off

    • 不解析固件依赖(不建立这些由固件推导出的链接)。
  • fw_devlink=permissive(一些版本/演进中作为默认或接近默认的行为)

    • 会解析依赖并建立链接,但尽量“不影响 probe”(更偏向提供依赖信息、减少过度阻塞)。
  • fw_devlink=on

    • 强制执行 probe 顺序(supplier 先 probe,consumer 后 probe),并且可影响 suspend/resume 的相关顺序语义。
  • fw_devlink=rpm

    • 相当于 on,并且额外对 Runtime PM(运行时电源管理)顺序进行约束

备注:不同内核版本对“默认值/细节”可能不完全一致,但“off/permissive/on/rpm 的语义分层”是 fw_devlink 演进过程中明确提出并使用的。