SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
2016
ELC-Europe 2016
Thursday, October 13 • 11:15 - 12:05
No, It's Never Too Late to Upstream Your Legacy Linux Based Platform
Agenda
● Questions and Answers
○ Why Upstreaming ?
○ Why mainline kernel ?
○ Why push code ?
○ Which workflow ?
○ How long does it take ?
○ How hard it is for an “old” platform ?
○ What about the benefits ?
Why should I push code for my (legacy) linux
based platform ?
Question 1
Why should I push code for my (legacy) linux based platform ?
Always the same question, always the same answers.
More and more vendors had understood the strategic advantages to push
code upstream.
But still very large vendors does not understand :
● They should publish the kernel code (sigh)
● They should push their kernel code in a git repo
● They should push clean code
● They should rework and push code upstream
● They should have a upstream based workflow for their linux products
Why should I push code for my (legacy) linux based platform ?
Hopefully, we can count some vendors that really participate in the
upstream work like :
● Intel
● IBM
● Texas Instruments
● Atmel (Microchip)
● Broadcom
● Renesas
● Freescale (NXP)
● ...
Why should I push code for my (legacy) linux based platform ?
This is for large corporations, what about smaller vendors ?
We can them separate in two :
● SoC vendors
● Boards makers (or ODMs)
For SoC vendors, Semiconductor World is a tough, and design costs for
a single SoC are really high, then IP companies like ARM, Synopsys,
Cadence… takes a big chunk of the costs and sometimes won’t let you
use their code for public work.
Why should I push code for my (legacy) linux based platform ?
For Board makers, the situation is even more complex.
Board makers are provided (when possible) with a very custom and
complex BSP or SDK which targets either all possible uses cases of
the SoC and very specific Reference Design uses cases.
Yes, sometimes ODMs does not even provide the kernel source (sigh)
and even nothing when Android is involved in the product, because
the Board vendor will only need to develop its custom Android App.
Why should I push code for my (legacy) linux based platform ?
But some SoC vendors participate actively to make (part) of their SoC
family work (partly) upstream.
But these BSPs are often kept on old kernel releases (almost 3.x).
Some vendors even synchronize regularly with the latest Stable kernel
and rebase their BSP on it (Renesas, …)
Open Source strategy of each SoC vendor should become the priority
in the SoC selection for a new product design.
Hmm, why Upstream kernel is so important
after all ?
Question 2
Hmm, why Upstream kernel is so important after all ?
Relying on Upstream kernel is important because (at least):
● You can get new features
○ Network features is the most important
○ USB Drivers
○ Performance Enhancement
○ …
● You can have bugfixes
● You can have enhanced security features
● You can the improve stability of your product
Making a product work is complex enough,
why push code upstream ?
Question 3
Making a product work is complex enough, why push code upstream ?
For two simple reasons :
● Code maintenance ease
● Fair return to the community
● Strengthen the Linux Platform
It’s all !
Making a product work is complex enough, why push code upstream ?
● Code maintenance ease ?
be part of the kernel evolution !
code will stay clean and get API changes !
Basic Board/SoC support will help following each linux releases.
In this case, when a recent kernel is needed, forward porting will be
faster and can be done regularly.
→ Gain time, gain money !
Making a product work is complex enough, why push code upstream ?
● Fair return to the community
This seems to be a communist concept !
But, if you stay realistic, Linux is free, Linux is powerful, modern,
modular, clean (as possible) and can provide an industrial grade
Operating System support.
Did you try to find a non-free alternative ? QNX ? Windows NT ?
These alternative are expensive, very expensive and often requires
huge royalties !
Making a product work is complex enough, why push code upstream ?
● Strengthen the Linux Platform
Large number of contributors and great amount of very different
platform to support are the keys to strenghten Linux, stabilize the code,
enhance portability and ensure longevity of the project.
Don’t worry, all SoC designs are different, and it’s good !
How should I organize my upstream
workflow ?
Question 7
How should I organize my upstream workflow ?
Some workflow examples :
● Maintain separate trees, one for the BSP and upstream
to mainline for client that require recent linux versions
● Port all code from a stable BSP, when nearly complete
rebase the BSP on the new linux version
● Iterate by porting the BSP kernel on each long term
version, and in the meanwhile upstream as much as
possible, …
How should I organize my upstream workflow ?
Mainline
Kernel tree
Vendor BSP
Tree
v4.1 v4.4 v4.9 v4.?
BSP
v1
BSP
v1.1
BSP
v1.2Upstream
Some code
to mainline
BSP
v2
BSP
v2.1
New
version
based on a
new
longterm
How should I organize my upstream workflow ?
Pros :
● BSP is stable
● Mainline kernel will sometime good support
● Some clients can use mainline
Cons :
● BSP kernel version becomes old at some time
● Rebasing on a new longterm will need a lot of work
● Back porting bugs and security fixes will become harder
● Back porting new features will create a hard to maintain kernel
How should I organize my upstream workflow ?
Mainline
Kernel tree
Stable
Longterm
trees
Vendor BSP
Tree
v4.1 v4.4 v4.9 v4.?
v4.1.1 v4.1.2 v4.1.3 v4.1.4 v4.4.1 v4.4.2 v4.4.3 v4.4.4 v4.9.1 v4.9.2 v4.9.3 v4.9.4
BSP
v1
BSP
v1.1
BSP
v1.2
BSP
v1.3Rebase
on new
Longterm
Push code
to Mainline
from current
BSP
How should I organize my upstream workflow ?
Pros :
● BSP has always longterm new features, ~each year
● Mainline kernel will get near ~100% support
● BSP driver are reworked and cleaned up
Cons :
● Must maintain a separate team for upstreaming
● Rebasing on each longterm can be complex since drivers has changed
● 1y BSP update may be short for long term supported products, old
BSP versions should also have bug and security fixes
How should I organize my upstream workflow ?
LTSI
LTSI initiative offers a way for vendors to base their product
release on a stable kernel following the annual long-term
version selection.
How long will it take me to push all this code
upstream ?
Question 5
How much time will it take me to push all this code upstream ?
This a complex question without any clear answers.
The Linux development cycle must be understood !
Rework/Refactor is mandatory before and while submission retries.
Depending on subsystems and complexity, submission time can take
most of the time.
How much time will it take me to push all this code upstream ?
The general mainlining workflow is to push code in each linux
subsystems, one by one.
Coherency of the support for a platform is done over the time.
There is no current “methodology” to push an overall platform support
at once, each maintainers will want to have control and review the
code to conform to their habits and ease their future work.
How much time will it take me to push all this code upstream ?
This is why it can take over 2 or 3 releases to
get a complete set of patches upstream and
have a working kernel on a platform.
The initial support of a platform is the most
frustrating period since it will need the full
patchset to boot correctly, but for some
reasons one subsystem will fail to merge on
time for some reasons.
How much time will it take me to push all this code upstream ?
Some of the reasons for the delays are generally :
● Code does not match the subsystem style / code design /
architecture (use of deprecated API, …)
● Code depends on headers part of an higher level subsystem (for
examples dt-bindings includes for Device Tree support)
● Code depends on partly merged framework API
● Patch is posted too late, too close to the next merge window
How much time will it take me to push all this code upstream ?
Here are some very approximate times :
● Push initial support of a SoC : 2 or 3 versions → ~6 months
● For a simple driver, like PWM, I2C bus, … :
○ 1 week refactoring / cleanup / patchset preparation
○ 1 day to 1 week for each repost depending on complexity
○ 1 or 2 days for testing before and after merge window
● For a more complex driver like DRM, SATA or Audio driver
○ Initial refactoring time can be much longer, up to 1 or 2 months
○ Time for repost depends on testing time and size of refactoring
○ Such driver upstreaming could be iterated over multiple versions
How much time will it take me to push all this code upstream ?
Global times estimations :
● For a simple headless SoC with any power management :
○ 6 months to 9 months
○ Full time for 1 person, multiple resources won’t speed up but will
permit more drivers submitted / refactored / tested per version
● For a very complex SoC with Video, Power Management, DSP
Audio, modem, …
○ 18 months to multiple years depending of the original code
quality and SoC complexity (Bus scaling, complex RPC code for
Co-processors, complex Audio, secret GPU code, …)
I have an old Linux port for my SoC, how
hard it would be to upstream this ?
Question 6
I have an old Linux port for my SoC, how hard it would be to upstream this ?
Since the Device Tree migration, the non-x86 support has changed a
lot and simplified (is this the right word ?) support for complex SoCs
by introducing some frameworks like :
● common clock framework
● pinctrl and gpiod
● generic interrupt
● reset
● drm
● ASoC
● ...
I have an old Linux port for my SoC, how hard it would be to upstream this ?
This means the traditional core in :
arch/arm/mach-mysoc/board.c
arch/arm/mach-mysoc/devices.c
arch/arm/mach-mysoc/pinmux.c
arch/arm/mach-mysoc/clock.c
arch/arm/mach-mysoc/include/mach/vmalloc.h
arch/arm/mach-mysoc/include/mach/mysoc.h
...
Is nearly finished !
I have an old Linux port for my SoC, how hard it would be to upstream this ?
With Device Tree support, the directory :
arch/arm/mach-mysoc/
Will only contain only very specific SoC code like SMP or special init
code. And in ARM64, these directories are gone forever !
But where did the code go ?
I have an old Linux port for my SoC, how hard it would be to upstream this ?
In Device Tree, yes, but also in the linux subsystems directories like :
drivers/irqchip : for IRQ controller support
drivers/clocksource : for Tick and Clock source support
drivers/clk : For system clocks management
drivers/pinctrl : For pads, pins configuration and mux
drivers/reset : For internal reset lines control
…
All these coordinated by the device-tree nodes interconnections.
I have an old Linux port for my SoC, how hard it would be to upstream this ?
But, will it be hard ?
Yes
But you can have help, by using :
● Trainings (Linux Foundation, Free Electrons, …)
● Linux Experts (BayLibre, Free Electrons, Pengutronix, …)
● Working with the community as Greg KH explains
What about the benefits ?
Question 7
What about the benefits ?
● Increase in Code quality
○ External review can make the code better
● Minimize Code maintenance cost
○ At least for far less than off-tree
● Enable faster rebase and testing effort
● Clear and Open Software Strategy
○ No more obscure and non-reviewed dirty code
● Customer fidelity over well maintain codebase
● A good way to promote the company within the technical sphere
○ Could also make talented developers work for you
What about the benefits ?
● Money
Yes, it will minimize long term R&D costs !
Ressources about mainlining
http://elinux.org/Kernel_Mainlining
● talks
● best practices
https://ltsi.linuxfoundation.org/what-is-ltsi/advantages-upstream-alignment
● “Marketing” Advantages

Contenu connexe

Tendances

LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLinaro
 
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by HisiliconLAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by HisiliconLinaro
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201Linaro
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLinaro
 
LAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLinaro
 
LAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community UpdateLAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community UpdateLinaro
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLinaro
 
LAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development LifecycleLAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development LifecycleLinaro
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
 
LAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android NLAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android NLinaro
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control InterfaceLinaro
 
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLinaro
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...Linaro
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLinaro
 
MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206Linaro
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLinaro
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processorsaccount inactive
 
BKK16-309A Open Platform support in UEFI
BKK16-309A Open Platform support in UEFIBKK16-309A Open Platform support in UEFI
BKK16-309A Open Platform support in UEFILinaro
 

Tendances (20)

LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
 
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by HisiliconLAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel Awareness
 
LAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg development
 
LAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community UpdateLAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community Update
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
 
LAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development LifecycleLAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development Lifecycle
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
 
LAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android NLAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android N
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control Interface
 
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome Keynote
 
MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processors
 
BKK16-309A Open Platform support in UEFI
BKK16-309A Open Platform support in UEFIBKK16-309A Open Platform support in UEFI
BKK16-309A Open Platform support in UEFI
 

Similaire à ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy linux based platform

In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...
In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...
In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...Agustin Benito Bethencourt
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.All Things Open
 
SFO15-110: Toolchain Collaboration
SFO15-110: Toolchain CollaborationSFO15-110: Toolchain Collaboration
SFO15-110: Toolchain CollaborationLinaro
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...Linaro
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLinaro
 
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated SystemsPetapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated Systemsdairsie
 
Evolution of unix environments and the road to faster deployments
Evolution of unix environments and the road to faster deploymentsEvolution of unix environments and the road to faster deployments
Evolution of unix environments and the road to faster deploymentsRakuten Group, Inc.
 
Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community
 
Debugging Numerical Simulations on Accelerated Architectures - TotalView fo...
 Debugging Numerical Simulations on Accelerated Architectures  - TotalView fo... Debugging Numerical Simulations on Accelerated Architectures  - TotalView fo...
Debugging Numerical Simulations on Accelerated Architectures - TotalView fo...Rogue Wave Software
 
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ..."Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...Edge AI and Vision Alliance
 
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM SystemsXPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM SystemsThe Linux Foundation
 
Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...
Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...
Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...Agustin Benito Bethencourt
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageMayaData Inc
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsChristian Charreyre
 
Bkk16 309B Enterprise Firmware - The gold standard and how to get there
Bkk16 309B Enterprise Firmware - The gold standard and how to get thereBkk16 309B Enterprise Firmware - The gold standard and how to get there
Bkk16 309B Enterprise Firmware - The gold standard and how to get thereLinaro
 
Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...
Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...
Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...Yoshitake Kobayashi
 
Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?GlobalLogic Ukraine
 
The Evolving Role of Build Engineering in Managing Open Source
The Evolving Role of Build Engineering in Managing Open SourceThe Evolving Role of Build Engineering in Managing Open Source
The Evolving Role of Build Engineering in Managing Open SourceDevOps.com
 

Similaire à ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy linux based platform (20)

In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...
In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...
In Need For A Linux Kernel Maintained For A Very Long Time? CIP Linux Kernel ...
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
 
SFO15-110: Toolchain Collaboration
SFO15-110: Toolchain CollaborationSFO15-110: Toolchain Collaboration
SFO15-110: Toolchain Collaboration
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at Linaro
 
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated SystemsPetapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
 
Evolution of unix environments and the road to faster deployments
Evolution of unix environments and the road to faster deploymentsEvolution of unix environments and the road to faster deployments
Evolution of unix environments and the road to faster deployments
 
Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph Ceph Community Talk on High-Performance Solid Sate Ceph
Ceph Community Talk on High-Performance Solid Sate Ceph
 
Debugging Numerical Simulations on Accelerated Architectures - TotalView fo...
 Debugging Numerical Simulations on Accelerated Architectures  - TotalView fo... Debugging Numerical Simulations on Accelerated Architectures  - TotalView fo...
Debugging Numerical Simulations on Accelerated Architectures - TotalView fo...
 
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ..."Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
 
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM SystemsXPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
 
Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...
Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...
Codethink elce 2017_maintaining_a_linux_kernel_for_13_years_you_must_be_kiddi...
 
All in one
All in oneAll in one
All in one
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projects
 
Bkk16 309B Enterprise Firmware - The gold standard and how to get there
Bkk16 309B Enterprise Firmware - The gold standard and how to get thereBkk16 309B Enterprise Firmware - The gold standard and how to get there
Bkk16 309B Enterprise Firmware - The gold standard and how to get there
 
Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...
Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...
Civil Infrastructure Platform: Industrial Grade SLTS Kernel and Base-layer De...
 
Vishal_Resume
Vishal_ResumeVishal_Resume
Vishal_Resume
 
Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?
 
The Evolving Role of Build Engineering in Managing Open Source
The Evolving Role of Build Engineering in Managing Open SourceThe Evolving Role of Build Engineering in Managing Open Source
The Evolving Role of Build Engineering in Managing Open Source
 

Plus de Neil Armstrong

Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCsLinux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCsNeil Armstrong
 
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCsEmbedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCsNeil Armstrong
 
ELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCsELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCsNeil Armstrong
 
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur InternetFête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur InternetNeil Armstrong
 
Fete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur InternetFete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur InternetNeil Armstrong
 
IPv6, un second souffle pour l’internet
 IPv6, un second souffle pour l’internet IPv6, un second souffle pour l’internet
IPv6, un second souffle pour l’internetNeil Armstrong
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsNeil Armstrong
 

Plus de Neil Armstrong (7)

Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCsLinux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
 
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCsEmbedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
 
ELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCsELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCs
 
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur InternetFête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
 
Fete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur InternetFete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur Internet
 
IPv6, un second souffle pour l’internet
 IPv6, un second souffle pour l’internet IPv6, un second souffle pour l’internet
IPv6, un second souffle pour l’internet
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server Internals
 

Dernier

Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptMadan Karki
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)dollysharma2066
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEroselinkalist12
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionMebane Rash
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxKartikeyaDwivedi3
 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncssuser2ae721
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfAsst.prof M.Gokilavani
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
 

Dernier (20)

Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.ppt
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptxExploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
 
young call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Serviceyoung call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Service
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of Action
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptx
 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
 

ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy linux based platform

  • 1. 2016 ELC-Europe 2016 Thursday, October 13 • 11:15 - 12:05 No, It's Never Too Late to Upstream Your Legacy Linux Based Platform
  • 2. Agenda ● Questions and Answers ○ Why Upstreaming ? ○ Why mainline kernel ? ○ Why push code ? ○ Which workflow ? ○ How long does it take ? ○ How hard it is for an “old” platform ? ○ What about the benefits ?
  • 3. Why should I push code for my (legacy) linux based platform ? Question 1
  • 4. Why should I push code for my (legacy) linux based platform ? Always the same question, always the same answers. More and more vendors had understood the strategic advantages to push code upstream. But still very large vendors does not understand : ● They should publish the kernel code (sigh) ● They should push their kernel code in a git repo ● They should push clean code ● They should rework and push code upstream ● They should have a upstream based workflow for their linux products
  • 5. Why should I push code for my (legacy) linux based platform ? Hopefully, we can count some vendors that really participate in the upstream work like : ● Intel ● IBM ● Texas Instruments ● Atmel (Microchip) ● Broadcom ● Renesas ● Freescale (NXP) ● ...
  • 6. Why should I push code for my (legacy) linux based platform ? This is for large corporations, what about smaller vendors ? We can them separate in two : ● SoC vendors ● Boards makers (or ODMs) For SoC vendors, Semiconductor World is a tough, and design costs for a single SoC are really high, then IP companies like ARM, Synopsys, Cadence… takes a big chunk of the costs and sometimes won’t let you use their code for public work.
  • 7. Why should I push code for my (legacy) linux based platform ? For Board makers, the situation is even more complex. Board makers are provided (when possible) with a very custom and complex BSP or SDK which targets either all possible uses cases of the SoC and very specific Reference Design uses cases. Yes, sometimes ODMs does not even provide the kernel source (sigh) and even nothing when Android is involved in the product, because the Board vendor will only need to develop its custom Android App.
  • 8. Why should I push code for my (legacy) linux based platform ? But some SoC vendors participate actively to make (part) of their SoC family work (partly) upstream. But these BSPs are often kept on old kernel releases (almost 3.x). Some vendors even synchronize regularly with the latest Stable kernel and rebase their BSP on it (Renesas, …) Open Source strategy of each SoC vendor should become the priority in the SoC selection for a new product design.
  • 9. Hmm, why Upstream kernel is so important after all ? Question 2
  • 10. Hmm, why Upstream kernel is so important after all ? Relying on Upstream kernel is important because (at least): ● You can get new features ○ Network features is the most important ○ USB Drivers ○ Performance Enhancement ○ … ● You can have bugfixes ● You can have enhanced security features ● You can the improve stability of your product
  • 11. Making a product work is complex enough, why push code upstream ? Question 3
  • 12. Making a product work is complex enough, why push code upstream ? For two simple reasons : ● Code maintenance ease ● Fair return to the community ● Strengthen the Linux Platform It’s all !
  • 13. Making a product work is complex enough, why push code upstream ? ● Code maintenance ease ? be part of the kernel evolution ! code will stay clean and get API changes ! Basic Board/SoC support will help following each linux releases. In this case, when a recent kernel is needed, forward porting will be faster and can be done regularly. → Gain time, gain money !
  • 14. Making a product work is complex enough, why push code upstream ? ● Fair return to the community This seems to be a communist concept ! But, if you stay realistic, Linux is free, Linux is powerful, modern, modular, clean (as possible) and can provide an industrial grade Operating System support. Did you try to find a non-free alternative ? QNX ? Windows NT ? These alternative are expensive, very expensive and often requires huge royalties !
  • 15. Making a product work is complex enough, why push code upstream ? ● Strengthen the Linux Platform Large number of contributors and great amount of very different platform to support are the keys to strenghten Linux, stabilize the code, enhance portability and ensure longevity of the project. Don’t worry, all SoC designs are different, and it’s good !
  • 16. How should I organize my upstream workflow ? Question 7
  • 17. How should I organize my upstream workflow ? Some workflow examples : ● Maintain separate trees, one for the BSP and upstream to mainline for client that require recent linux versions ● Port all code from a stable BSP, when nearly complete rebase the BSP on the new linux version ● Iterate by porting the BSP kernel on each long term version, and in the meanwhile upstream as much as possible, …
  • 18. How should I organize my upstream workflow ? Mainline Kernel tree Vendor BSP Tree v4.1 v4.4 v4.9 v4.? BSP v1 BSP v1.1 BSP v1.2Upstream Some code to mainline BSP v2 BSP v2.1 New version based on a new longterm
  • 19. How should I organize my upstream workflow ? Pros : ● BSP is stable ● Mainline kernel will sometime good support ● Some clients can use mainline Cons : ● BSP kernel version becomes old at some time ● Rebasing on a new longterm will need a lot of work ● Back porting bugs and security fixes will become harder ● Back porting new features will create a hard to maintain kernel
  • 20. How should I organize my upstream workflow ? Mainline Kernel tree Stable Longterm trees Vendor BSP Tree v4.1 v4.4 v4.9 v4.? v4.1.1 v4.1.2 v4.1.3 v4.1.4 v4.4.1 v4.4.2 v4.4.3 v4.4.4 v4.9.1 v4.9.2 v4.9.3 v4.9.4 BSP v1 BSP v1.1 BSP v1.2 BSP v1.3Rebase on new Longterm Push code to Mainline from current BSP
  • 21. How should I organize my upstream workflow ? Pros : ● BSP has always longterm new features, ~each year ● Mainline kernel will get near ~100% support ● BSP driver are reworked and cleaned up Cons : ● Must maintain a separate team for upstreaming ● Rebasing on each longterm can be complex since drivers has changed ● 1y BSP update may be short for long term supported products, old BSP versions should also have bug and security fixes
  • 22. How should I organize my upstream workflow ? LTSI LTSI initiative offers a way for vendors to base their product release on a stable kernel following the annual long-term version selection.
  • 23.
  • 24. How long will it take me to push all this code upstream ? Question 5
  • 25. How much time will it take me to push all this code upstream ? This a complex question without any clear answers. The Linux development cycle must be understood ! Rework/Refactor is mandatory before and while submission retries. Depending on subsystems and complexity, submission time can take most of the time.
  • 26. How much time will it take me to push all this code upstream ? The general mainlining workflow is to push code in each linux subsystems, one by one. Coherency of the support for a platform is done over the time. There is no current “methodology” to push an overall platform support at once, each maintainers will want to have control and review the code to conform to their habits and ease their future work.
  • 27. How much time will it take me to push all this code upstream ? This is why it can take over 2 or 3 releases to get a complete set of patches upstream and have a working kernel on a platform. The initial support of a platform is the most frustrating period since it will need the full patchset to boot correctly, but for some reasons one subsystem will fail to merge on time for some reasons.
  • 28. How much time will it take me to push all this code upstream ? Some of the reasons for the delays are generally : ● Code does not match the subsystem style / code design / architecture (use of deprecated API, …) ● Code depends on headers part of an higher level subsystem (for examples dt-bindings includes for Device Tree support) ● Code depends on partly merged framework API ● Patch is posted too late, too close to the next merge window
  • 29. How much time will it take me to push all this code upstream ? Here are some very approximate times : ● Push initial support of a SoC : 2 or 3 versions → ~6 months ● For a simple driver, like PWM, I2C bus, … : ○ 1 week refactoring / cleanup / patchset preparation ○ 1 day to 1 week for each repost depending on complexity ○ 1 or 2 days for testing before and after merge window ● For a more complex driver like DRM, SATA or Audio driver ○ Initial refactoring time can be much longer, up to 1 or 2 months ○ Time for repost depends on testing time and size of refactoring ○ Such driver upstreaming could be iterated over multiple versions
  • 30. How much time will it take me to push all this code upstream ? Global times estimations : ● For a simple headless SoC with any power management : ○ 6 months to 9 months ○ Full time for 1 person, multiple resources won’t speed up but will permit more drivers submitted / refactored / tested per version ● For a very complex SoC with Video, Power Management, DSP Audio, modem, … ○ 18 months to multiple years depending of the original code quality and SoC complexity (Bus scaling, complex RPC code for Co-processors, complex Audio, secret GPU code, …)
  • 31. I have an old Linux port for my SoC, how hard it would be to upstream this ? Question 6
  • 32. I have an old Linux port for my SoC, how hard it would be to upstream this ? Since the Device Tree migration, the non-x86 support has changed a lot and simplified (is this the right word ?) support for complex SoCs by introducing some frameworks like : ● common clock framework ● pinctrl and gpiod ● generic interrupt ● reset ● drm ● ASoC ● ...
  • 33. I have an old Linux port for my SoC, how hard it would be to upstream this ? This means the traditional core in : arch/arm/mach-mysoc/board.c arch/arm/mach-mysoc/devices.c arch/arm/mach-mysoc/pinmux.c arch/arm/mach-mysoc/clock.c arch/arm/mach-mysoc/include/mach/vmalloc.h arch/arm/mach-mysoc/include/mach/mysoc.h ... Is nearly finished !
  • 34. I have an old Linux port for my SoC, how hard it would be to upstream this ? With Device Tree support, the directory : arch/arm/mach-mysoc/ Will only contain only very specific SoC code like SMP or special init code. And in ARM64, these directories are gone forever ! But where did the code go ?
  • 35. I have an old Linux port for my SoC, how hard it would be to upstream this ? In Device Tree, yes, but also in the linux subsystems directories like : drivers/irqchip : for IRQ controller support drivers/clocksource : for Tick and Clock source support drivers/clk : For system clocks management drivers/pinctrl : For pads, pins configuration and mux drivers/reset : For internal reset lines control … All these coordinated by the device-tree nodes interconnections.
  • 36. I have an old Linux port for my SoC, how hard it would be to upstream this ? But, will it be hard ? Yes But you can have help, by using : ● Trainings (Linux Foundation, Free Electrons, …) ● Linux Experts (BayLibre, Free Electrons, Pengutronix, …) ● Working with the community as Greg KH explains
  • 37. What about the benefits ? Question 7
  • 38. What about the benefits ? ● Increase in Code quality ○ External review can make the code better ● Minimize Code maintenance cost ○ At least for far less than off-tree ● Enable faster rebase and testing effort ● Clear and Open Software Strategy ○ No more obscure and non-reviewed dirty code ● Customer fidelity over well maintain codebase ● A good way to promote the company within the technical sphere ○ Could also make talented developers work for you
  • 39. What about the benefits ? ● Money Yes, it will minimize long term R&D costs !
  • 40.
  • 41. Ressources about mainlining http://elinux.org/Kernel_Mainlining ● talks ● best practices https://ltsi.linuxfoundation.org/what-is-ltsi/advantages-upstream-alignment ● “Marketing” Advantages