A complete step-by-step guide: from first patch to mainline Linux.
In Part 1 of this series, we took a crypto driver from working code to something the Linux kernel community can take seriously — clean builds, zero static analysis warnings, a validated DT binding, and checkpatch errors at zero. Now the work shifts. This second and final part covers the entire outward journey: packaging your code into a patch series, writing a cover letter, using get_maintainer.pl to find the right people, sending with git send-email, responding to review feedback, tracking your patch on Patchwork, understanding realistic timelines, and adding your MAINTAINERS entry. From the first send to the mainline — this is how it works.
Structuring Your Git History
Each patch in your series must be a clean, focused git commit. The commit message IS the patch description that appears in git log forever:

Generating the Patch Files

The Cover Letter
The cover letter (0000-cover-letter.patch) introduces the entire series. Reviewers read this first. Invest time in it:

get_maintainer.pl — Never Skip This
The get_maintainer.pl script reads MAINTAINERS file and the git history to determine exactly who should receive your patches. Never manually guess the recipients:

Key Crypto Subsystem Maintainers (as of 2025)

Note: This maintainers list can be different in the future.
Sending with git send-email



Types of Reviewer Tags

Responding to Review Feedback
Every review comment needs a response — either you fix it, or you explain why you disagree (politely, with technical justification):



Patchwork: Your Patch Dashboard
Patchwork is the web interface that tracks all patches sent to kernel mailing lists. It’s where you watch your patch status:

The kernel-test-robot (also called 0-day) automatically tests patches sent to mailing lists. Within hours of your submission, you may get an automated reply like:

These automated reports are extremely useful — they catch compilation failures on architectures you didn’t test. Always fix everything the test robot reports before sending v2.

One of the most common questions from developers new to upstreaming: how long does this take? The honest answer: it varies enormously, but here are realistic expectations based on actual crypto driver upstream experiences:

Understanding the kernel release cycle is critical for setting timeline expectations:


Every new driver needs a MAINTAINERS file entry. This tells git who to notify for future patches touching your driver and where the code lives:


Use this checklist every time you prepare a patch series for submission:
Upstreaming a crypto driver is a marathon, not a sprint. The kernel community’s high standards exist because this code runs on millions of devices handling real cryptographic operations. Security matters, and maintainers take it seriously.
The most important things to remember:
When your patch finally appears in Linus’s tree, it’s genuinely one of the most satisfying moments in embedded software development. Your code, reviewed by some of the best systems programmers in the world, running on kernels everywhere.
Start today. Run checkpatch.pl on your driver. Fix every warning. Run sparse. Subscribe to linux-crypto. Read a few patch threads. Then send your v1.
