android kernel upstreaming: overview & status27 dropping bcmhd & yaffs2 diffstat: 349 files changed,...

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

Upload: others

Post on 22-Oct-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

  • 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

    [email protected]

    *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