Date post: | 29-Nov-2014 |
Category: |
Technology |
Upload: | linaro |
View: | 502 times |
Download: | 4 times |
Android Kernel Upstreaming: Overview & Status
John [email protected]
http://www.linaro.org
March 5th 2013Linaro 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
*Android is a trademark of Google Inc.
33
Planning and Discussion Items
● Dmabuf fences and Android sync
● ION upstreaming
● Interactive cpufreq gov & Power aware scheduling
● ETM/ETB