The Linaro Kernel Tree

What It Is

The Linaro kernel is a consolidation kernel, i.e. this is a place to integrate all the latest ARM developments together, including the work produced by the Linaro members, in order to give them greater visibility without having to wait for the next mainline merge window cycle.

In practice this means that the latest release from kernel.org is used for stability of the core and generic code, while the ARM related parts are more on the bleeding edge.

The criteria for merging patches in this kernel source tree are as follows:

  1. patches to be merged are already in a later upstream kernel tree, or
  2. proposed patches must have a high probability of being merged upstream in the future, and
  3. only bugfixes would be merged in a given branch once a new upstream kernel version is released and the Linaro kernel has moved to a new branch for it.

What It Is Not

The Linaro kernel is not a maintainer tree. It is not the path towards mainline inclusion of your patches. Having patches merged in the Linaro tree does not eliminate the necessity for patches to be posted, reviewed, debated, and finally merged by upstream subsystem maintainers.

The Linaro tree is not an experimental tree either. It is meant to be used by other people to build upon, and therefore must be useful. The inclusion of a patch must not cause regressions to existing code. Experimental code might be accepted only if self contained or otherwise well tested, with a reasonable assurance that it won't affect people who choose not to use it.

And the Linaro kernel branches are not long term support branches. The focus is on development of code to be moved towards the latest upstream kernel, and not the maintenance of older kernel releases.

How long is the Linaro kernel maintained?

The Linaro kernel closely follows official mainline kernel releases from Linus Torvalds. Those releases are made roughly every 3 months. When such a release is made, a new Linaro kernel branch is forked from that release and the previous Linaro kernel branch is left behind. All patches that the previous Linaro kernel carried which were not merged into the new mainline release will normally be carried to the new Linaro branch. Given that Linaro's focus is to carry patches with a mainline inclusion prospect, there shouldn't normally be that many patches left to carry over from one branch to another. The new branch becomes the focus for any further developments, while the older branches should only receive obvious bug fixes or important security fixes. However there is no guarantee as to the level of attention the old branches will receive.

Is the Linaro kernel good to be used by Linux distributors?

Linux distributors are welcome, even encouraged, to use the Linaro kernel and benefit from the work provided by Linaro. There is, however, a difference between Linaro's kernel and a full fledged Linux distribution's kernel that is important to keep in mind.

While a distribution's focus is on the greatest support to enhance the end user experience, Linaro is there to promote support of the ARM architecture in general through increased exposure of latest developments and consolidation towards the mainline kernel. This means that the Linaro kernel will not merge anything with no hope of ever being accepted upstream, including stuff like e.g. a single huge patch adding many thousand lines of code in one shot to support proprietary 3D graphics libraries.

This doesn't mean that the Linaro kernel is not meant or suitable as a basis for a distribution's kernel though. In fact, the work that Linaro is doing should benefit all Linux players on ARM by providing a common base upon which specific integration work may be performed for the needs of different distributions, including the long term maintenance if so desired. But the scope of the Linaro kernel itself does not extend to non-mainlinable work which still has to be assumed by distributors.

Is the Linaro kernel good for developers?

The Linaro kernel is certainly a good base for developers:

  • It is stored into stable Git branches, meaning that it is not rebased.
  • It carries the latest ARM related patches which should make it easier to develop against.
  • The core code remains at the last mainline stable release so to limit the scope of possible instability to the ARM related code and not worry about the rest of the kernel.

And because the Linaro kernel largely includes ARM patches from later -rc kernel trees it is therefore easy to rebase new developments on such -rc kernels for upstream submission. Some people might prefer to develop against the latest mainline kernel tree directly which is also perfectly fine, in which case backporting resulting patches to the Linaro kernel should be easily achieved for the same reason.

Is it worth asking for new patches to be merged in the Linaro kernel tree?

The typical mainline kernel development flow follows a 8 to 12 week cycle. All patches are initially merged in the so called "merge window" which lasts 2 weeks, and then follows a stabilization period for the remainder of the cycle. This means that new patches have to be developed and be "merge ready" before the merge window opens. The consequence is that new features might only be available in a stable mainline kernel release up to 6 months after they've been completed.

While mainline inclusion of new patches is always the ultimate goal, the Linaro kernel provides an interim solution for making those patches available to a wider audience much sooner. The Linaro kernel is packaged and released on a regular basis along with the rest of Linaro's results, and tested into real-life environments providing early exposure to new developments without having to wait for the next mainline release.

Where is the Linaro kernel to be found?

The Linaro kernel tree is maintained in a Git repository on git.linaro.org, under the kernel/linux-linaro-2.6.xx.git directory where xx denotes the latest mainline release number (go to http://git.linaro.org to see the list of available kernels).

On a regular basis, this kernel is built and packaged for a set of targets that are supported by the actual Linaro releases (see http://www.linaro.org/downloads/ for details).

What to do for patches to be merged in the Linaro kernel?

Suffice to post a request on the linaro-dev@lists.linaro.org mailing list for proposed patches to be merged in the Linaro kernel tree. If the criteria listed above are met then the merge should happen quickly.

WorkingGroups/KernelArchived/KernelTree (last modified 2013-01-14 19:42:47)