Ubuntu Kernel Delta
With every Ubuntu release, we attempt to remain as true to the upstream Linux kernel as possible. During every release cycle at UDS, the Ubuntu kernel team meets to discuss the likely upstream Linux kernel version to base the release on. For example, the upstream Linux kernel v3.2 was chosen for the Precise Pangolin 12.04 LTS release. This forms the base version for the life of that release. However, there are inevitably patches which we carry on top of the upstream Linux kernel which differentiates the Ubuntu kernel from the upstream Linux kernel. Many changes will come from fixes for reported issues and the associated Launchpad bugs will be referenced via a BugLink: in the commit. This document attempts to describe the general sets of patches which are carried and why. For a detailed list of Ubuntu kernel patches which are carried on top of the upstream Linux kernel, please refer to the Ubuntu Kernel Delta Review blueprint for each release:
Ubuntu Packaging Patches
These patches are the ingredients necessary to build a Debian package. They have no merit in the upstream Linux kernel and will always be carried as a delta. These changes are localized to the debian/ and debian.<branch>/ directories within the Ubuntu kernel tree and are typically annotated with an "UBUNTU:" prefix when viewing the Ubuntu kernel commit logs.
Ubuntu Configuration Patches
These patches target changes to the Ubuntu kernel configuration. These changes can enable or disable drivers or features as well as modify a driver from being built as a module to built in or vice versa. These patches are usually prefixed with "UBUNTU: [Config]" when viewing the Ubuntu kernel commit logs. These patches do not make sense to be sent upstream as they represent Ubuntu specific decisions. For a detailed report of the Ubuntu kernel configuration, please refer to the Ubuntu Kernel Config Review blueprint referenced from https://wiki.ubuntu.com/KernelTeam/Specs .
Upstream Cherry-Pick Patches
Upstream development continues even after the Ubuntu kernel has locked on a chosen upstream version. It is often discovered that a patch which resolves an issues was applied upstream, but after the version which was chosen for the Ubuntu kernel. In this scenario, the upstream patch is cherry-picked (ie git cherry-pick) into the Ubuntu kernel. Even though this patch originates from upstream, we consider it as part of the Ubuntu kernel delta as the patch was not included in the stock upstream Linux kernel release which the Ubuntu kernel was based upon. When viewing the Ubuntu kernel commit logs, these patches should match the upstream commit subject (ie contain no commit subject “UBUNTU:” prefix) and will contain a “(cherry picked from commit <sha1>)” in the commit message. They will typically be fixes for known issues or come as part of a recommended upstream stable update.
Ubuntu Driver Patches
These patches refer to changes against out-of-tree drivers which, for one reason or another, were chosen to be carried in the Ubuntu kernel tree. The Ubuntu kernel team has made a concerted effort to eliminate the need to carry these types of drivers and move them to separate DKMS packages. These drivers are localized to the ubuntu/ directory within the Ubuntu kernel tree and are typically annotated with an “UBUNTU: ubuntu:” prefix when viewing the Ubuntu kernel commit logs.
Ubuntu Sauce Patches
These patches are typically patches which are making their way upstream, but have not officially landed in the upstream Linux kernel. These patches are deemed valuable enough to be carried in the Ubuntu Kernel regardless of the upstream acceptance. Many of these patches are taken from upstream maintainers' trees and upstream mailing lists. These patches are typically annotated with an “UBUNTU: SAUCE:” prefix when viewing the Ubuntu kernel commit logs.
Ubuntu No-Up Patches
These patches usually originate as SAUCE patches but end up getting rejected upstream. They are deemed valuable enough to continue carrying even despite their upstream rejection. They are typically annotated with an “UBUNTU: SAUCE: (no-up)” prefix when viewing the Ubuntu kernel commit logs.