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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
K. Hayashi
March 19, 2026
Technology
1
0
Share
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
QEMU/arm64+Xen で domU Zephyr をマルチ起動
khayash1
0
120
Case Study: Linux kernel contribution and LTS following ~1つの修正パッチが24 個のstable パッチになった話~
khayash1
0
15
Other Decks in Technology
See All in Technology
自分をひらくと次のチャレンジの敷居が下がる
sudoakiy
5
1.4k
互換性のある(らしい)DBへの移行など考えるにあたってたいへんざっくり
sejima
PRO
0
510
「できない」のアウトプット 同人誌『精神を壊してからの』シリーズ出版を 通して得られたこと
comi190327
3
500
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
130
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
77k
JEDAI認定プログラム JEDAI Order 2026 受賞者一覧 / JEDAI Order 2026 Winners
databricksjapan
0
430
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
260
QA組織のAI戦略とAIテスト設計システムAITASの実践
sansantech
PRO
1
300
FASTでAIエージェントを作りまくろう!
yukiogawa
4
180
CloudFrontのHost Header転送設定でパケットの中身はどう変わるのか?
nagisa53
1
230
脳が溶けた話 / Melted Brain
keisuke69
1
1.2k
20260326_AIDD事例紹介_ULSC.pdf
findy_eventslides
0
310
Featured
See All Featured
We Are The Robots
honzajavorek
0
210
Building Flexible Design Systems
yeseniaperezcruz
330
40k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Site-Speed That Sticks
csswizardry
13
1.1k
Believing is Seeing
oripsolob
1
100
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Done Done
chrislema
186
16k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
240
Building the Perfect Custom Keyboard
takai
2
720
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
240
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
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 は失敗ではなく、「隠れていた仕様」が見えた 巨大ドライバを直すということは 「仕様を直す」ことではなく「バランスを取る」こと