Android Kernel Upstreaming:
Overview & Status
John Stultz
john.stultz@linaro.org
http://www.linaro.org
March 5th
2013
Lina...
2
● Overview of the Android™ kernel patch
set
● Status of what has made it upstream and
what hasn't
● Why upstreaming is i...
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 dr...
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 ch...
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 cla...
21
In the staging directory
● Binder
● Ashmem
● Logger
● Low-memory-killer
● Alarm-dev
● Android-gadget-driver (as CCG dri...
22
In development
● FIQ Debugger
● Integrated w/ KDB, Portions upstream
● Key-reset-driver
● Some functionality merged in ...
23
Work to be done
● Graphics (Ion/Sync)
● Interactive cpufreq gov
● Netfilter changes / Paranoid networking
● Alarm-dev t...
24
Upstream Status
25
Out of tree stats (3.8)
● ~361 patches
● Diffstat:
● 253 files changed, 27321 insertions(+), 511 deletions(-)
Generated...
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 (c...
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, a...
30
Community forks are less
positive
● ARM SoCs almost exclusively focused on
Android
● Very large community of developers...
31
Increasing collaboration
● Getting the functionality upstream allows
for more collaboration
● If you're an Android syst...
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 awar...
Upcoming SlideShare
Loading in …5
×

LCA13: Android Kernel Upstreaming: Overview & Status

1,001 views
679 views

Published on

Resource: LCA13
Name: Android Kernel Upstreaming: Overview & Status
Date: 05-03-2013
Speaker: John Stultz

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,001
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

LCA13: Android Kernel Upstreaming: Overview & Status

  1. 1. 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. 2. 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. 3. 3 Overview of Android Patch Set
  4. 4. 4 Carving up the Bugdroid https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming
  5. 5. 5 Core Platform Components https://blueprints.launchpad.net/linux-linaro/+spec/android-core-platform-upstreaming
  6. 6. 6 ● Binder ● Ashmem ● Logger ● Monotonic event timestamps Core Platform Components
  7. 7. 7 Power/Performance Improvements
  8. 8. 8 Power/Performance Improvements ● Wakelock infrastructure ● Alarm-dev ● low-memory-killer ● Interactive cpufreq governor
  9. 9. 9 Platform Debugging Features https://blueprints.launchpad.net/linux-linaro/+spec/android-debugging
  10. 10. 10 Platform Debugging Features ● Android Gadget Driver (for ADB) ● FIQ Debugger ● ram_console/persistent_ram ● Keyreset driver ● ETM/ETB improvements ● Goldfish emulator support
  11. 11. 11 Networking Changes
  12. 12. 12 Networking Changes ● Paranoid networking framework ● Netfilter changes ● Bluetooth improvements ● bcmhd driver
  13. 13. 13 Graphics Infrastructure https://blueprints.launchpad.net/linux-linaro/+spec/android-graphics-upstreaming
  14. 14. 14 Graphics Infrastructure ● ION ● Sync
  15. 15. 15 Misc Items https://blueprints.launchpad.net/linux-linaro/+spec/android-nonesential-platform-upstreaming
  16. 16. 16 Misc Items ● Android battery meta-driver ● Input drivers & tweaks ● Switch class ● Timed gpio ● MMC tweaks ● Smaller changes all over
  17. 17. 17 Deprecated features
  18. 18. 18 Deprecated features ● pmem ● earlysuspend ● apanic ● yaffs2
  19. 19. 19 Upstream Status
  20. 20. 20 Already upstream ● Wakelocks ● Monotonic event stamps ● Ram_console/persistent_memory ● via pstore/ramoops ● Switch class ● via ExtConn driver*
  21. 21. 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. 22. 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. 23. 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. 24. 24 Upstream Status
  25. 25. 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. 26. 26 Generated with: https://github.com/johnstultz-work/git-plot-tools.git
  27. 27. 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. 28. 28 Why does upstreaming matter?
  29. 29. 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. 30. 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. 31. 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. 32. 32 Join in! http://www.linaro.org john.stultz@linaro.org *Android is a trademark of Google Inc.
  33. 33. 33 Planning and Discussion Items ● Dmabuf fences and Android sync ● ION upstreaming ● Interactive cpufreq gov & Power aware scheduli ng ● ETM/ETB

×