Linux Driver Release Checklist¶
Overview¶
This document defines a minimal and practical checklist before releasing a custom Linux driver.
The goal is to ensure:
- build correctness
- basic code quality
- deployment readiness
- runtime functionality
This checklist is designed for out-of-tree drivers with Device Tree overlays.
1. Build Validation¶
1.1 Clean build¶
Requirements:
- no build errors
- no unexpected warnings
1.2 Cross build (if applicable)¶
Verify:
- correct toolchain
- correct target architecture
- no vermagic mismatch risk
1.3 Device Tree build¶
Requirements:
- no syntax errors
- no critical warnings
- no
unit_addressconflicts - no
reg_formatissues
2. Static Code Checks¶
2.1 checkpatch¶
Acceptable:
- minor style warnings
Not acceptable:
- ERROR level issues
- obvious kernel API misuse
2.2 sparse (semantic check)¶
Focus on:
- pointer type mismatch
- user-space pointer misuse
- missing __user annotation
- endian issues
2.3 (Optional) coccicheck¶
Useful for:
- API misuse patterns
- deprecated usage
- missing error handling
3. Module Metadata Check¶
3.1 modinfo¶
Verify:
- version matches release
- license is correct
- description is present
4. Installation Validation¶
4.1 Copy files¶
4.2 Apply overlay¶
Verify:
4.3 Load module¶
Verify:
5. Runtime Validation¶
5.1 Device presence¶
5.2 Driver binding¶
5.3 Functional check¶
- CHIP_ID read must match expected value
- no unexpected
0x00read - no probe failure
5.4 hwmon interface¶
5.5 debug interface¶
Verify:
- correct bus (i2c / spi)
- correct mode (irq / poll)
- counters increment correctly
5.6 IRQ validation¶
Verify:
- IRQ count increases when triggered
5.7 Polling validation¶
Verify:
- polling mode works when IRQ disabled
- no mixed behavior between IRQ and polling
6. Conflict Check¶
6.1 spidev conflict¶
Expected:
- no spidev if custom SPI driver is used
6.2 Chip select ownership¶
Check:
- no "chipselect already in use" error
- correct CE mapping
7. Version Consistency¶
Ensure consistency across:
- VERSION file
- README
- package name
- MODULE_VERSION()
8. Release Packaging¶
8.1 Package structure¶
8.2 Final checks¶
- install script works
- uninstall script works
- no hardcoded paths
- no debug leftover logs
9. Minimum Release Criteria¶
A release is considered valid if:
- build succeeds
- dtbo compiles clean
- module loads successfully
- device probes successfully
- functional read/write works
- IRQ and polling both validated
- no resource conflicts
Summary¶
This checklist ensures that the driver:
- builds cleanly
- integrates correctly with the kernel
- binds correctly to hardware
- functions correctly at runtime
- can be deployed reproducibly
It is intentionally lightweight but sufficient for most custom driver releases.