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

Android Kernel Upstreaming: Overview & Status - The Linux

Feb 09, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android Kernel Upstreaming: Overview & Status - The Linux

Android Kernel Upstreaming: Overview & Status

John [email protected]

http://www.linaro.org

Feb 18th 2013Android Builders Summit

Page 2: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 3: Android Kernel Upstreaming: Overview & Status - The Linux

3

Overview of Android Patch Set

Page 4: Android Kernel Upstreaming: Overview & Status - The Linux

4

Carving up the Bugdroid

Page 5: Android Kernel Upstreaming: Overview & Status - The Linux

5

Core Platform Components

Page 6: Android Kernel Upstreaming: Overview & Status - The Linux

6

● Binder● Ashmem● Logger● Monotonic event timestamps

Core Platform Components

Page 7: Android Kernel Upstreaming: Overview & Status - The Linux

7

Power/Performance Improvements

Page 8: Android Kernel Upstreaming: Overview & Status - The Linux

8

Power/Performance Improvements

● Wakelock infrastructure● Alarm-dev● low-memory-killer● Interactive cpufreq governor

Page 9: Android Kernel Upstreaming: Overview & Status - The Linux

9

Platform Debugging Features

Page 10: Android Kernel Upstreaming: Overview & Status - The Linux

10

Platform Debugging Features

● Android Gadget Driver (for ADB)● FIQ Debugger● ram_console/persistent_ram● Keyreset driver● ETM/ETB improvements● Goldfish emulator support

Page 11: Android Kernel Upstreaming: Overview & Status - The Linux

11

Networking Changes

Page 12: Android Kernel Upstreaming: Overview & Status - The Linux

12

Networking Changes

● Paranoid networking framework● Netfilter changes● Bluetooth improvements● bcmhd driver

Page 13: Android Kernel Upstreaming: Overview & Status - The Linux

13

Graphics Infrastructure

Page 14: Android Kernel Upstreaming: Overview & Status - The Linux

14

Graphics Infrastructure

● ION● Sync

Page 15: Android Kernel Upstreaming: Overview & Status - The Linux

15

Misc Items

Page 16: Android Kernel Upstreaming: Overview & Status - The Linux

16

Misc Items

● Android battery meta-driver● Input drivers & tweaks● Switch class● Timed gpio● MMC tweaks● Smaller changes all over

Page 17: Android Kernel Upstreaming: Overview & Status - The Linux

17

Deprecated (mostly) features

Page 18: Android Kernel Upstreaming: Overview & Status - The Linux

18

Deprecated (mostly) features

● pmem● earlysuspend● apanic● yaffs2 (sort of)

Page 19: Android Kernel Upstreaming: Overview & Status - The Linux

19

Upstream Status

Page 20: Android Kernel Upstreaming: Overview & Status - The Linux

20

Already upstream

● Wakelocks● Monotonic event stamps● Ram_console/persistent_memory

● via pstore/ramoops

● Switch class● via ExtConn driver

Page 21: Android Kernel Upstreaming: Overview & Status - The Linux

21

In the staging directory

● Binder● Ashmem● Logger● Low-memory-killer● Alarm-dev● Android-gadget-driver (as CCG driver)● Timed GPIO

Page 22: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 23: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 24: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 25: Android Kernel Upstreaming: Overview & Status - The Linux

25

Upstream Status

Page 26: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 27: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 28: Android Kernel Upstreaming: Overview & Status - The Linux

28

Page 29: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 30: Android Kernel Upstreaming: Overview & Status - The Linux

30

Why does upstreaming matter?

Page 31: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 32: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 33: Android Kernel Upstreaming: Overview & Status - The Linux

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

Page 34: Android Kernel Upstreaming: Overview & Status - The Linux

34

Join in!http://www.linaro.org

[email protected]

*Android is a trademark of Google Inc.