Back to home page

OSCL-LXR

 
 

    


0001 ===================
0002 Firmware Guidelines
0003 ===================
0004 
0005 Users switching to a newer kernel should *not* have to install newer
0006 firmware files to keep their hardware working. At the same time updated
0007 firmware files must not cause any regressions for users of older kernel
0008 releases.
0009 
0010 Drivers that use firmware from linux-firmware should follow the rules in
0011 this guide. (Where there is limited control of the firmware,
0012 i.e. company doesn't support Linux, firmwares sourced from misc places,
0013 then of course these rules will not apply strictly.)
0014 
0015 * Firmware files shall be designed in a way that it allows checking for
0016   firmware ABI version changes. It is recommended that firmware files be
0017   versioned with at least a major/minor version. It is suggested that
0018   the firmware files in linux-firmware be named with some device
0019   specific name, and just the major version. The firmware version should
0020   be stored in the firmware header, or as an exception, as part of the
0021   firmware file name, in order to let the driver detact any non-ABI
0022   fixes/changes. The firmware files in linux-firmware should be
0023   overwritten with the newest compatible major version. Newer major
0024   version firmware shall remain compatible with all kernels that load
0025   that major number.
0026 
0027 * If the kernel support for the hardware is normally inactive, or the
0028   hardware isn't available for public consumption, this can
0029   be ignored, until the first kernel release that enables that hardware.
0030   This means no major version bumps without the kernel retaining
0031   backwards compatibility for the older major versions.  Minor version
0032   bumps should not introduce new features that newer kernels depend on
0033   non-optionally.
0034 
0035 * If a security fix needs lockstep firmware and kernel fixes in order to
0036   be successful, then all supported major versions in the linux-firmware
0037   repo that are required by currently supported stable/LTS kernels,
0038   should be updated with the security fix. The kernel patches should
0039   detect if the firmware is new enough to declare if the security issue
0040   is fixed.  All communications around security fixes should point at
0041   both the firmware and kernel fixes. If a security fix requires
0042   deprecating old major versions, then this should only be done as a
0043   last option, and be stated clearly in all communications.
0044