Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linux contribution topics: Fixes for large driver
Search
K. Hayashi
March 19, 2026
Technology
10
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linux contribution topics: Fixes for large driver
Linux Technical Jamboree Ep.II #9 (Lightning Talk)
K. Hayashi
March 19, 2026
More Decks by K. Hayashi
See All by K. Hayashi
汎用 IP ドライバ移植の罠 - Implementation of IP driver to SoC
khayash1
0
26
QEMU/arm64+Xen で domU Zephyr をマルチ起動
khayash1
0
160
Case Study: Linux kernel contribution and LTS following ~1つの修正パッチが24 個のstable パッチになった話~
khayash1
0
22
Other Decks in Technology
See All in Technology
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
310
Type-safe IaC for Dart
coborinai
0
160
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
890
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
240
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
270
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
550
CIで使うClaude
iwatatomoya
0
290
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
310
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.5k
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
770
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
120
Network Firewallやっていき!
news_it_enj
0
170
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2k
Practical Orchestrator
shlominoach
191
11k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
We Have a Design System, Now What?
morganepeng
55
8.2k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
Java REST API Framework Comparison - PWX 2021
mraible
34
9.5k
KATA
mclloyd
PRO
35
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
600
Transcript
Linux contribution topics: Fixes for large driver Embedded SW Engineer/OpenSource
Contributer K.Hayashi ( khayash1) 2026/03/19 Japan Technical Jamboree Episode II ep.9 ~「正当な修正」vs「歴史の維持」~
About me 2026/03/19
Linux stmmac driver (drivers/net/ethernet/stmicro/stmmac/) • STMicro の ethernet IP 向けドライバ
• しかし実体は Synopsys dwmac IP + vendor glue • ARM / RISC-V SoC を含め、非常に多くの SoC ベンダが利用 結果として • IP 世代が混在 (10M~100G+) • capability を持つ IP / 持たない IP が混在 • devicetree 記述の癖もベンダごとに違う Overview 2026/03/19 vendor glue Synopsys dwmac pcs phy net ethernet stmmac stmmac は一見 vendor driver だが 実は巨大な共通基盤 pcs phy First commit から 15年以上
What was wrong? 2026/03/19 FIFO サイズ を devicetree の property
で指定 ⇒ HW に実装されたサイズ で制約 しかし実装では… • 無条件に devicetree で指定された値を サイズ値として使用 • 実際の HW 実装サイズ値を超えても 黙って動く(または不定動作) 設定ミスが ドライバでは検出されない gmac0: ethernet@e0800000 { compatible = "snps,dwxgmac-2.10", "snps,dwxgmac"; reg = <0xe0800000 0x8000>; interrupt-parent = <&vic1>; interrupts = <24 23 22>; interrupt-names = "macirq", "eth_wake_irq", "eth_lpi"; mac-address = [000000000000]; max-frame-size = <3800>; phy-mode = "gmii"; snps,multicast-filter-bins = <256>; snps,perfect-filter-entries = <128>; rx-fifo-depth = <16384>; tx-fifo-depth = <16384>; clocks = <&clock>; clock-names = "stmmaceth"; snps,axi-config = <&stmmac_axi_setup>; snps,mtl-rx-config = <&mtl_rx_setup>; snps,mtl-tx-config = <&mtl_tx_setup>; ... }; From: Documentation/devicetree/bindings/net/snps,dwmac.yaml rx-fifo-depth = <16384>; tx-fifo-depth = <16384>;
Patch #1 – Clamp to HW capability 2026/03/19 パッチ内容 [devicetree
指定値] > [HW 実装サイズ値] → 警告 + 上限に固定 対応コミット 044f2fba Limit FIFO size by hardware capability 受け入れられた理由 • 後方互換性を壊さない (動いていたものは動く) • 追加ログで異常を可視化 mainline 的に有用な修正 tx-fifo-size = 16384 cap = 8192 tx-fifo-size = 8192
Patch #2 – Error if not specified 2026/03/19 課題 “FIFO
サイズが未指定” かつ “HW 実装サイズ値も取れない” → 正しい初期化が不可能 対応内容 上記の課題であればエラー → 設計思想としては正しい 対応コミット 8865d226 Specify hardware capability value when FIFO size isn't specified 不定な状態のまま黙って動かすべきではないので修正 しかし… tx-fifo-size = N/A cap = ?? ERROR
Issues – revert 2026/03/19 問題発覚 古い dwmac IP はそもそも HW
実装サイズ値を持たない FIFO サイズは固定値で動作していた (devicetree 値は無視) 結果 今まで動いていた SoC がエラー終了で起動できなくなるとの報告 → 後方互換性の破壊 → すぐに Revert 発動 Revert 2a64c963 Revert "Specify hardware capability value when FIFO size isn’t specified" 「正しさ」より「壊さないこと」が優先される 誰もその問題仕様に気づいてなかったので、 のちに議論の種に
Lessons learned 2026/03/19 評価 対応 パッチ ほぼ安全 警告 + 上限固定
#1 互換性次第 エラー終了 #2 mainline kernel では • 「正しくないから止める」のではなく「既存のものは止めない」を優先 • 「知らない仕様」前提で動いているものは、未だに隠れている それをあぶり出して伝えるのも contriubution 特に SoC 共通ドライバ では顕著
Summary 2026/03/19 stmmac は ”STmicro のドライバ” ではなくSoC 業界の共通基盤 ドライバ改善は三つ巴の構図 •
設計:分からないならエラーにすべき • 歴史:分からない IP が普通にあった • 現実:それで動いている環境が存在する ⇒ どれも否定できない Mainline の判断は「正しさ」よりも「互換性重視」 ⇒ Revert は失敗ではなく、「隠れていた仕様」が見えた 巨大ドライバを直すということは 「仕様を直す」ことではなく「バランスを取る」こと