Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Android Kernel Upstreaming: Overview & Status
John [email protected]
http://www.linaro.org
Feb 18th 2013Android Builders Summit
mailto:[email protected]://www.linaro.org/
2
● Overview of the Android™ kernel patch set● Status of what has made it upstream and what
hasn't● Why upstreaming is important
What I'll cover
3
Overview of Android Patch Set
4
Carving up the Bugdroid
5
Core Platform Components
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
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
14
Graphics Infrastructure
● ION● Sync
15
Misc Items
16
Misc Items
● Android battery meta-driver● Input drivers & tweaks● Switch class● Timed gpio● MMC tweaks● Smaller changes all over
17
Deprecated (mostly) features
18
Deprecated (mostly) features
● pmem● earlysuspend● apanic● yaffs2 (sort of)
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
22
In development
● FIQ Debugger● Integrated w/ KDB, Portions upstream
● Key-reset-driver● Some functionality queued for 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● Non-staging path for binder/logger● Lot of small misc items
24
Thank you!Andy Green
Anton Vorontsov
Arve Hjønnevåg
Axel Lin
Bjorn Bringert
Chanwoo Choi
Christopher Lais
Colin Cross
Corentin Chary
Dan Carpenter
David Howells
David Rientjes
Devendra Naga
Dima Zavin
Emil Goode
Greg Dietsche
Greg Kroah-Hartman
H Hartley Sweeten
Hugh Dickins
Jesper Juhl
Joe Perches
Johannes Thumshirn
John Stultz
JP Abgrall
Justin P. Mattock
Kim, Milo
Konstantin Khlebnikov
Marco Navarra
Mark Brown
Masanari Iida
Mike Lockwood
MyungJoo Ham
Nick Kralevich
Paul E. McKenney
Praneeth Kumar Bajjuri
Rabin Vincent
Rafael J. Wysocki
Randy Dunlap
Rebecca Schultz
Robert Love
Sachin Kamat
San Mehat
Sherwin Soltani
Shuah Khan
Stephen Boyd
Thomas Meyer
Tim Bird
Tracey Dent
Zhengwang Ruan
25
Upstream Status
26
59.2%: drivers/net/wireless/bcmdhd/
11.8%: fs/yaffs2/
4.3%: drivers/usb/gadget/
3.5%: net/netfilter/
2.7%: arch/arm/
2.3%: drivers/gpu/ion/
2.1%: drivers/input/
1.8%: include/linux/
1.6%: drivers/base/
1.5%: drivers/staging/android/
1.1%: drivers/power/
1.0%: kernel/
7.1%:
Out of tree stats
● ~568 patches● Diffstat:
● 500 files changed, 127518 insertions(+), 2179 deletions(-)
Generated with git diffstat -dirstat=lines,0,cumulative
27
Dropping bcmhd & yaffs2
● Diffstat:● 349 files changed, 35358 insertions(+), 2179 deletions(-)
15.0% drivers/usb/gadget/ 12.2% net/netfilter/ 9.5% arch/arm/ 8.2% drivers/gpu/ion/ 6.3% include/linux/ 5.7% drivers/base/ 5.2% drivers/staging/android/ 4.6% drivers/input/misc/ 3.8% drivers/power/ 2.9% drivers/cpufreq/ 2.7% drivers/misc/ 2.3% drivers/net/ppp/ 2.2% drivers/cpuidle/ 2.1% kernel/power/ 1.8% drivers/input/touchscreen/ 1.7% Documentation/ 1.6% drivers/hid/ 1.0% samples/uhid/ 1.0% drivers/mmc/ 10.2%
Generated with git diffstat -dirstat=lines,0,cumulative
28
29
Google isn't standing still
● Fair amount of recent development around:● Bcmhd (net)● ION (gpu)● Sync● Interactive cpufreq gov (cpufreq)● Android battery driver (power)● Netfilter
30
Why does upstreaming matter?
31
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
32
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
33
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
34
Join in!http://www.linaro.org
*Android is a trademark of Google Inc.
http://www.linaro.org/
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34