Linux 多媒体卡(MultiMediaCard,简称 MMC)子系统原本计划在 Linux 7.0 中加入一些新的硬件支持、针对部分 eMMC 的安全擦除/TRIM 优化,以及各种其他改进。但现在所有 MMC 相关的变更全部被拒绝,将无法进入 Linux 7.0 整个开发周期。原因是这些代码明显缺乏测试,也没有经过 linux-next 的充分验证。
Linus Torvalds 直接称之为"complete garbage"(完全是垃圾)和"untested crap"(没测试过的垃圾)。
原本为 Linux 7.0 准备的一些比较有意思的 MMC 变更包括:
NXP IW61x 系列 WiFi 芯片的 SDIO 设备 ID 支持
支持 2025 年之后的设备
对某些 Kingstom eMMC 的安全擦除/TRIM 进行优化
DW_MMC 驱动的代码清理
MediaTek MT8189 在 mtk-sd 驱动中的支持
以及 SHDCI 驱动的多项更新
提交的 pull request 原本列出了所有计划进入 Linux 7.0 的 MMC 变更。
但 Linus Torvalds 发现这个 pull request 甚至无法正常编译,并且明显没有经过 linux-next 等常规流程的验证,他直接评论道:
翻译过来就是:
“不接受。 这些变更完全是垃圾,连编译都通不过。 看起来它根本没进过 linux-next,也没有任何人做过 build 测试。当 CONFIG_MULTIPLEXER=m 的时候,我们会编译 core.o 这个文件obj-$(CONFIG_MULTIPLEXER) += mux-core.o但在 include/linux/mux/consumer.h 里却写着#ifdef CONFIG_MULTIPLEXER这在模块情况下(CONFIG_MULTIPLEXER_MODULE 被定义)是不会成立的,于是就出现了一长串错误,比如drivers/mux/core.c:312:14: error: redefinition of ‘mux_control_states’因为 mux/consumer.h 头文件里定义了那些 dummy 包装函数。换句话说,ad314348ceb4 ("mux: Add helper functions for getting optional and selected mux-state") 这个 commit 就是纯粹的、未经测试的垃圾。我不想看到你发来什么“修复版”的 pull request。这完全不可接受,这个 merge window 我不会再从你这里拉任何东西了。别再给我发这种没进 linux-next、连最基本的闻一闻都臭烘烘的垃圾代码。等 7.1 的时候你可以再试,但前提是它真的进过 linux-next,并且经过了认真的测试。”因此,这些 MMC 相关的变更现在只能推迟到 Linux 7.1 的合并窗口了。 Linux 7.0 正式稳定版发布后,大约在四月中旬才会开启 7.1 的合并窗口。
简单总结: 因为一个基础的 Kconfig + ifdef 没写对,导致模块编译直接爆炸 + 完全没进 linux-next 测试,Linus 直接暴怒,把整个 MMC 子系统的 pull request 全部打回,维护者这个合并周期被"禁赛"了。
参考:
Linux-7.0-No-MMC-Changes
https://lore.kernel.org/lkml/20260209133441.556464-1-ulf.hansson@linaro.org/
https://lore.kernel.org/linux-mmc/CAPDyKFrFez=tDXLqRmeS1qpnVMCUPi8POjYkbRGiwAhcT3shfA@mail.gmail.com/