Android Kernel Upstreaming:
Overview & Status
John Stultz
john.stultz@linaro.org
http://www.linaro.org
March 5th
2013
Linaro Connect Asia
(based off of my Android Builders Summit talk + updates!)
2
● Overview of the Android™ kernel patch
set
● Status of what has made it upstream and
what hasn't
● Why upstreaming is important
● Planning & discussion items
What I'll cover
3
Overview of Android Patch Set
4
Carving up the Bugdroid
https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming
5
Core Platform Components
https://blueprints.launchpad.net/linux-linaro/+spec/android-core-platform-upstreaming
6
● Binder
● Ashmem
● Logger
● Monotonic event timestamps
Core Platform Components
7
Power/Performance
Improvements
8
Power/Performance
Improvements
● Wakelock infrastructure
● Alarm-dev
● low-memory-killer
● Interactive cpufreq governor
9
Platform Debugging Features
https://blueprints.launchpad.net/linux-linaro/+spec/android-debugging
10
Platform Debugging Features
● Android Gadget Driver (for ADB)
● FIQ Debugger
● ram_console/persistent_ram
● Keyreset driver
● ETM/ETB improvements
● Goldfish emulator support
11
Networking Changes
12
Networking Changes
● Paranoid networking framework
● Netfilter changes
● Bluetooth improvements
● bcmhd driver
13
Graphics Infrastructure
https://blueprints.launchpad.net/linux-linaro/+spec/android-graphics-upstreaming
14
Graphics Infrastructure
● ION
● Sync
15
Misc Items
https://blueprints.launchpad.net/linux-linaro/+spec/android-nonesential-platform-upstreaming
16
Misc Items
● Android battery meta-driver
● Input drivers & tweaks
● Switch class
● Timed gpio
● MMC tweaks
● Smaller changes all over
17
Deprecated features
18
Deprecated features
● pmem
● earlysuspend
● apanic
● yaffs2
19
Upstream Status
20
Already upstream
● Wakelocks
● Monotonic event stamps
● Ram_console/persistent_memory
● via pstore/ramoops
● Switch class
● via ExtConn driver*
21
In the staging directory
● Binder
● Ashmem
● Logger
● Low-memory-killer
● Alarm-dev
● Android-gadget-driver (as CCG driver)*
● Timed GPIO
● Sync driver (as of last night!) queued for 3.10
22
In development
● FIQ Debugger
● Integrated w/ KDB, Portions upstream
● Key-reset-driver
● Some functionality merged in 3.9
● Low-memory-killer
● Mempressure cgroup
● Ashmem unpinning functionality
● Volatile ranges
● Goldfish platform support
23
Work to be done
● Graphics (Ion/Sync)
● Interactive cpufreq gov
● Netfilter changes / Paranoid networking
● Alarm-dev timerfd integration
● ETM/ETB improvements
● Android gadget/CCG out of staging
● Non-staging path for binder/logger
● Lot of small misc items
24
Upstream Status
25
Out of tree stats (3.8)
● ~361 patches
● Diffstat:
● 253 files changed, 27321 insertions(+), 511 deletions(-)
Generated with git diff -dirstat=lines,0,cumulative
17.3%: drivers/usb/gadget/
16.5%: net/netfilter/
11.5%: arch/arm/
11.1%: drivers/gpu/ion/
7.3%: drivers/input/
6.6%: include/linux/
4.9%: drivers/base/
4.0%: drivers/cpufreq/
3.2%: drivers/net/ppp/
2.6%: drivers/power/
1.5%: kernel/
1.4%: drivers/mmc/
1.3%: drivers/staging/android/
1.3%: drivers/switch/
1.2%: drivers/char/
1.0%: Documentation/
7.3%: Other
26
Generated with:
https://github.com/johnstultz-work/git-plot-tools.git
27
Google isn't standing still
● Fair amount of recent development
around:
● ION (gpu)
● Sync
● Interactive cpufreq gov (cpufreq)
● Android battery driver (power)
● Netfilter
28
Why does upstreaming matter?
29
Code forks aren't bad
● The Android patch set is in effect a fork of
the Linux kernel
● Kernel code forks are common, and
actually good.
● PREEMPT_RT
● 4g/4g split
● Most filesystems
● GPL allows for eventual re-merging, or at
least learning from the fork
30
Community forks are less
positive
● ARM SoCs almost exclusively focused on
Android
● Very large community of developers
● Writing drivers with out-of-tree dependencies
● Android kernel became standard for ARM
BSPs
● Many non-android platforms ship with
Android kernel
– WebOS
– FirefoxOS
– Ubuntu Phone
31
Increasing collaboration
● Getting the functionality upstream allows
for more collaboration
● If you're an Android system developer,
the upstream kernel community is your
community
● It's like a family, for good and bad
32
Join in!
http://www.linaro.org
john.stultz@linaro.org
*Android is a trademark of Google Inc.
33
Planning and Discussion Items
● Dmabuf fences and Android sync
● ION upstreaming
● Interactive cpufreq gov & Power aware scheduli
ng
● ETM/ETB

LCA13: Android Kernel Upstreaming: Overview & Status