34
Android Kernel Upstreaming: Overview & Status John Stultz [email protected] http://www.linaro.org Feb 18 th 2013 Android Builders Summit

Android Kernel Upstreaming: Overview & Status - The Linux

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Android Kernel Upstreaming: Overview & Status

John [email protected]

http://www.linaro.org

Feb 18th 2013Android Builders Summit

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%: <other>

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% <other>

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

[email protected]

*Android is a trademark of Google Inc.