固件指南

切换到较新内核的用户应安装较新的固件文件以保持其硬件正常工作。 同时,更新的固件文件不得对旧内核版本的用户造成任何回归。

使用 linux-firmware 中的固件的驱动程序应遵循本指南中的规则。(如果对固件的控制有限,即公司不支持 Linux,固件来自其他地方,那么当然这些规则将不严格适用。)

  • 固件文件的设计方式应允许检查固件 ABI 版本更改。 建议固件文件至少使用主版本/次版本进行版本控制。 建议 linux-firmware 中的固件文件以某些设备特定名称命名,并且仅包含主版本。 固件版本应存储在固件标头中,或者作为例外,作为固件文件名的一部分,以便驱动程序检测到任何非 ABI 修复/更改。 linux-firmware 中的固件文件应使用最新的兼容主版本覆盖。 较新的主版本固件应与加载该主版本号的所有内核保持兼容。

  • 如果内核对硬件的支持通常处于非活动状态,或者该硬件不可供公众消费,则可以忽略此问题,直到启用该硬件的第一个内核版本。 这意味着在内核不保留对旧主版本向后兼容性的情况下,不会出现主版本升级。 次版本升级不应引入较新内核非可选依赖的新功能。

  • 如果安全修复需要锁定步固件和内核修复才能成功,那么 linux-firmware 仓库中当前受支持的稳定版/LTS 内核所需的所有受支持的主版本都应使用安全修复进行更新。 内核补丁应检测固件是否足够新,以声明安全问题是否已修复。 所有关于安全修复的沟通都应指向固件和内核修复。 如果安全修复需要弃用旧的主版本,那么这应该仅作为最后的选择来完成,并且应在所有通信中明确说明。

  • 影响用户 API (UAPI) 的固件文件不应引入破坏现有用户空间程序的更改。 对此类固件的更新必须确保与现有用户空间应用程序的向后兼容性。 这包括维护用户空间程序所依赖的一致的接口和行为。