Android Mainlining Project

This page is for organizing the Android Mainlining Project. It has information and resources associated with this project.

Goal
The goal of this project is to ultimately mainline all patches required to run the current released version of Android. The purpose of mainlining these patches is 3-fold:
 * 1) to allow a developer to use the latest released version of the Linux kernel to run an Android system, without requiring patches to their kernel
 * 2) to make it possible to develop drivers and board support features against either an Android kernel release or a kernel.org kernel release, with little or no modifications or conditional code
 * 3) to reduce or eliminate the burden of maintaining independent patches from release to release for Android kernel developers

To "mainline" a patch means to have it included in Linus Torvalds' kernel.org kernel, in a released (non-rc) version.

Process
[This is a draft section, up for discussion]

Overall:
 * identify all patches/features, and categorize into core or non/core
 * core = feature is required or strongly desired for Android operation on a platform
 * non-core = Most of the Android system can run without the feature

Per feature or patch:
 * research any previous submission feedback
 * incorporate feedback, as appropriate
 * negotiate any interface changes with Google Android team
 * submit updated patches to mainline
 * repeat until accepted

Resources

 * Mailing list: https://lists.linuxfoundation.org/mailman/listinfo/ce-android-mainline
 * Linaro blueprint for project: https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming

Updates

 * KS2012: Status of Android upstreaming
 * Meeting: Android mainlining interest group meeting 2012
 * Summary: 9:30- 12:00 February 10, 2012 at the Sofitel Hotel in Redwood Shores, California.

People
People who have expressed interest in this project are:


 * Tim Bird
 * John Stultz
 * Paul McKenney
 * Deepak Saxena
 * Arnd Bergmann
 * Thomas Gleixner
 * Arjan Van de Ven
 * Brian Swetland
 * Tetsuyuki Kobayashi
 * Andy Green
 * Victor M. Jaquez
 * Jesse Barker
 * Anton Vorontsov
 * Greg Kroah-Hartman
 * Shuah Khan

roles/expertise
This section has miscellaneous notes on roles, capabilities and expertise of group's members

John Stultz is the owner of the Linaro blueprint for mainlining Android features. Tim Bird is the owner of the CE Workgroup project for mainlining Android features. Deepak and Jesse can help make arrangements for a meeting at Linaro Connect. Tim can help make arrangements for a meeting at Android Builders Summit.


 * John Stultz has worked on POSIX Alarm timers
 * Jesse is working on shared memory buffers related to pmem/CMA/parts of ion
 * Anton Vorontsov is looking at the lowmemory killer
 * Greg has put some Android patches into mainline (under drivers/staging/android) previously
 * Greg put some Android patches in mainline under drivers/staging/android in Dec. 2011
 * Paul McKenney - kicking around ideas for dealing with wakelocks single global lock (dec. 2011)

Plans

 * Update this site with information on latest patch status - ongoing, by anyone
 * [FIXTHIS - add sections needing a status or status update]

USB

 * Android Composite Gadget driver discussion
 * http://lxr.free-electrons.com/source/drivers/staging/ccg/ - Configurable Composite Gadget - reincarnation of Android Composite Gdaget

Progress Chart
This section is intended to show our progress, by showing the patch set size over time. With any luck, as we get features into mainline, the difference between the Android kernel and the mainline Linux kernel will shrink.

 ''Note: This table is not up-to-date and is hard to measure anyway. The inclusion of a lot of material into 3.3 obsoletes the need for a per-patch tracking mechanism (maybe?). Also, there will always be some difference, due to board support packages and new development areas (like ion), so the goal is not really 0 differences, but just a reduction overall. I'm not sure if we'll maintain this table or not, but I'm leaving it for now as a placeholder.''


 * diff of 2.6.29 kernel.org tree versus kernel