Are you Really Helped by Upstream Kernel Code?

Similar documents
CLOSE ENCOUNTERS OF THE UPSTREAM RESOURCE

Long Term Support Initiative

How to cook the LTSI kernel with Yocto recipe

Unification of embedded CPU variants

Kernel maintainership: an oral tradition

Digitalization of Kernel Diversion from the Upstream

Keeping up with LTS Linux Kernel Functional Testing on Devices

Sony s Open Devices Project. Goals Achievements. What went right? What went wrong? Lessons learned

Understanding the Open Source Development Model. » The Linux Foundation. November 2011

SOFTWARE CONFIGURATION MANAGEMENT

Embedded Linux Now and the future with LTSI. Hisao Munakata, Renesas Tsugikazu SHIBATA, NEC 27. March 2014 CollaboraDon Summit

The Embedded Linux Problem

LTSI Project update Long Term Support Ini0a0ve. Tsugikazu SHIBATA, NEC 21, February 2017 Embedded Linux Conference Hilton Portland, OR

Power Up/Level Up: Supercharging Your Security Program for Cloud and DevOps. Rich

A Survivor's Guide to Contributing to the Linux Kernel

Bringing OpenStack to the Enterprise. An enterprise-class solution ensures you get the required performance, reliability, and security

Linux Filesystems and Storage Chris Mason Fusion-io

Lab 08. Command Line and Git

A Guide to the Linux Kernel Development Process. Jonathan Corbet LWN.net

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

Using GitHub to Share with SparkFun a

[RFC] Obtaining Management Buy-in for Mainline Development

2013 North American Software Defined Data Center Management Platforms New Product Innovation Award

LTSI Project Update. LTSI Kernel, How We Can Help Automotive Industries. Hisao Munakata, Tsugikazu Shibata

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week

Linux Tiny Penguin Weight Watchers. Thomas Petazzoni Free Electrons electrons.com

Getting Hybrid IT Right. A Softchoice Guide to Hybrid Cloud Adoption

Team Up: Contributing to the Tizen Platform. Narasimha Swamy Sanjay NM

Getting started with GitHub

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World

Creating an Intranet using Lotus Web Content Management. Part 2 Project Planning

Case study on PhoneGap / Apache Cordova

Use of Mojo PowerPoint Template. Your name, Title

Building Debian-Based Products: Experiences in Collaboration

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

How Can Testing Teams Play a Key Role in DevOps Adoption?

Porting Linux to a new SoC

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

UTILIZING A BIG.LITTLE TM SOLUTION IN AUTOMOTIVE

You Can t Move Forward Unless You Can Roll Back. By: Michael Black

Wednesday, May 30, 12

Two years of ARM SoC support mainlining: lessons learned

DRIVING PROGRESS Automotive Electronics Systems Innovation Network

SMART Guidance for Notes Migrations

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Chapter 5 - Input / Output

Cypress Adopts Questa Formal Apps to Create Pristine IP

<Insert Picture Here> Lustre Development

Planning and Implementing ITIL in ICT Organisations

Design Better. Reduce Risks. Ease Upgrades. Protect Your Software Investment

LTSI Project update Long Term Support Ini0a0ve. Tsugikazu SHIBATA, NEC Hisao Munakata, Renesas 20, May 2014 LinuxCon so

The Yocto Project. Chris Young S/W Specialist SILICA Europe. Harmonising Software Development across multiple Embedded ARM SOC targets

LTSI Project Update. for LTSI-3.10 and shared kernel test trial (part 2) Tsugikazu Shibata, Hisao Munakata

Get your business Skype d up. Lessons learned from Skype for Business adoption

The HiKey AOSP collaborative experience

How to Evaluate a Next Generation Mobile Platform

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

The IDN Variant TLD Program: Updated Program Plan 23 August 2012

Upstreaming Hardware Enablement

Linux Kernel Evolution. OpenAFS. Marc Dionne Edinburgh

Shipping Call of Duty at Infinity Ward Paul Haile Production 2018 Activision Publishing, Inc.

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Open World Forum 2013

Rethinking VDI: The Role of Client-Hosted Virtual Desktops. White Paper Virtual Computer, Inc. All Rights Reserved.

Move Up to an OpenStack Private Cloud and Lose the Vendor Lock-in

Homework 1: Collaborative Text Editor

Submitting your Work using GIT

2 The IBM Data Governance Unified Process

Vendor: IBM. Exam Code: C Exam Name: Fundamentals of Applying Tivoli Storage Solutions V3. Version: Demo

The #1 Key to Removing the Chaos. in Modern Analytical Environments

THE JOURNEY OVERVIEW THREE PHASES TO A SUCCESSFUL MIGRATION ADOPTION ACCENTURE IS 80% IN THE CLOUD

Colorado Digital Government Summit & Cyber Security Summit. September 18, 2007

What To Ask Your SD-WAN Vendor

JBoss Enterprise Middleware

IT Enterprise Services. Capita Private Cloud. Cloud potential unleashed

COPYRIGHTED MATERIAL. Introducing VMware Infrastructure 3. Chapter 1

DARING CHANGES IN ENTERPRISE GUIDE WITH A SAFETY NET

IT Project Management Challenges with Open Source. George A Pace

White Paper(Draft) Continuous Integration/Delivery/Deployment in Next Generation Data Integration

The Mobile-Phone Domain and CELF. Scott E. Preece Motorola Mobile Devices Linux OS Development

Introduction to Standards based approach to Server

Keeping Up With The Linux Kernel. Marc Dionne AFS and Kerberos Workshop Pittsburgh

Happy Birthday, Ajax4jsf! A Progress Report

Disclaimer. This talk vastly over-simplifies things. See notes for full details and resources.

The failure of Operating Systems,

Open Business Innovation with Open Source Software

Welcome to IoTivity Developer Day. Introduction: Mark Skarpness, Intel VP & Director Embedded Operating Systems

Data Virtualization Implementation Methodology and Best Practices

RED HAT ENTERPRISE LINUX. STANDARDIZE & SAVE.

#jenkinsconf. Managing jenkins with multiple components project. Jenkins User Conference Israel. Presenter Name Ohad Basan

Transforming XenServer into a proper open-source project

For Performance and Scalability, Amadeus Chooses Data Center

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Agenda Birds Do It: Migrating Forms to Java EE Web A Case Study

Why Converged Infrastructure?

Review Version Control Concepts

Introducing Enterprise Architecture. into the Enterprise

HPE ALM Standardization as a Precursor for Data Warehousing March 7, 2017

Transcription:

Are you Really Helped by Upstream Kernel Code? 1 HISAO MUNAKATA RENESAS SOLUTIONS CORP hisao.munakata.vt(at)renesas.com

who am I Working for Renesas (semiconductor) 2 Over 15 years real embedded Linux business field experience Provide free Linux starter code (BSP) for our platform Support Linux newbie's but important customer ( who asks everything about Linux to us) Over 5 years experience working with the community Working with industry at CELF ( now CE working group at LF ) Invited some key community developers to my team, to shape our upstream activity We have learned to adopt upstream first strategy now

2010 kernel patch contribution ranking ( If you measure performance by contribution no. ) 3 Linux Foudation Linux Kernel Development 2010 How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It

Lesson learned from upstream work Use community standard development method use public ML for code review and patch submission use git ( not to make unreadable jumbo patch ) eliminate in-house kernel repository (almost all) drivers are in upstream Sync with upstream kernel migration schedule test RC stage kernel and send feedback if any continuous kernel development to support latest version 4 However, is it directly helping embedded product development?

Common production team complaints Poor driver functional coverage 5 insufficient performance optimization (DMA support) hardware error handle support is missing Want to add private kernel function that never discussed at upstream ( It might be corporate differentiator function ) Insufficient document for QA team review device driver document test case and test report No milestone for future migration Too fast kernel migration ( need more time to whole system stabilization ) Production team likely sticks on verified old kernel

Common community complaints 6 Contribution from embedded is still relatively inactive Sticking on very old kernel Need more collaborative work with upstream community Need more code consolidation to eliminate vendor kernel Community await more feedback from embedded forks

point of this talk Analyze each party s behavioral principle upstream community development embedded production development team Clarify conflicting factor and its root cause low upstream contribution stick on old kernel needs for document unclear community development plan Propose best practice for embedded Linux use embedded LTS version backport strategy forward port trial 7

Upstream principals = divergence 8 Think sustainable evolution random technical improve no specific shred narrow target allow diversity Ever lasting development no specific due date Think for better future incremental improve moving target depends on demand Fair governance Completely open purely technical (for best) volunteer contribution basis WiFi / BT memory management ALSA power management V4L2 CPU ARCH File System USB Upstream guys work for unified better future for all

Production principals = convergence 9 Clear production goal strict release due date sever performance target high cost pressure One shot development allow interim solution average skilled engineer relatively large team Quality requirement product liability demand limited use case reset is not allowed product schedule budget Industry developer work for their current particular product

completely controversial mentality Upstream work can not be a part of production development It is hard to share upstream development and production development together, as their motivation is completely opposite. 10 Upstream Production This circumstances should not be specific for embedded forks

Why only embedded still struggles 11 Enterprise forks might already educated how to coordinate conflictive two task, upstreaming development and productization together to drive Linux innovation. What is missing for embedded? How enterprise forks manage this? I have given one hint Not to make vendor specific distribution mainlined kernel patch can be merged by major distributor Reject private local patch Enterprise distro accept already mainlined patch only It motivated enterprise developer to write upstream patch as a extended part of their productization task. Need more motivation and consolidation point for embedded

Trial clarification for embedded characteristics 12 As a witness of real embedded Linux field, I would like to give my shot for several confusion happening in embedded Linux world. I hope this helps to find best practice to tackle them. Some questions might be form community side, others from production team (as I head almost everyday). 1) Why embedded forks stick on ancient version kernel? 2) Why upstream code does not contain full SoC functionality? 3) Why there is no written document for Linux driver? 4) Why you can not commit schedule for upstream migration? 5) Why embedded likely develop private device driver code? 6) Why embedded require more time for system validation?

Why embedded forks stick on ancient kernel? 13 Essential initial delay problem Set producer want to adopt latest SoC device. Each SoC device include slightly (or heavily) modified IP blocks So upstream device driver does not include its support then. previous kernel device release Essential initial delay upstream development ( 6 9 month min.) device support added add private extension to support new device production development We can not provide mainlined Linux support at device release point

Why upstream code is not fully SoC functional? 14 When if you attempt to add your device support to the upstream code, it should be simplified. Otherwise community maintainer will not accept too big full functional patch. To improve more wider functional support (like add DMA support), you need continued work to add them. It should be generic (not device specific) as much as possible not to cause unnecessary per device fragment. It may take some time. full SoC function covered jumbo patch X Reject All device functions covered in unified way series 1 series 2 series 3 This might be poor functional coverage Early stage upstream driver might be intentionally simplified.

Why there is no written document for Linux driver? Initially Linux kernel includes various nice document inside See /document directory Some document are also translated (jp, cn, ) Linux is moving target, driver API may change if it is really needed. So there is no common document. Linux Device Driver has migrated 3 times Production team, especially QA team want to review driver document to verify its behavior. Error recovery capability should be interested. 15 Nice to have driver document targeting particular version, but

Why you can not commit development competition? 16 If you develop your code as a part of upstream code ( this is really recommended ), you must go through pre-defined community public review / improve / approve process. If your proposal does require coordination with existing kernel design, it may take some longer time. Also you may requested to modify your code not to conflict with others. propose feedback comment flame ver 2 unpredictable period ver 3 ver 4 queued latency for kernel release merged Everything production team needed should be in place up front

can not wait upstream driver/framework support 17 Upstream team can hardly fulfill the immediate demands comes from production team, because each development takes some time. So it need to be developed in advance. Ideally upstream team should predict future production demand trends from its marketing strategy. predict near future demand propose lead time 6-9 month merged demand from product propose in house code lead time 6-9 month merged write once private code too late! Upstream team should predict future production demand

Why embedded need more time for system validation? Not all embedded device connected to the Internet. Not all mobile device are ready for field firmware update. Many embedded device are expected run 24-365 basis. Product user might not be familiar with reset / reboot. 18 There is no standard tiny Linux userland for embedded, and each production developer need to validate their userland with their own application on certain environment. Dynamic fundamental software ( kernel, toolchain ) change require whole system re-validation. So they want to keep use same base environment as much as possible. Embedded forks eager to have common solid Linux base

And yet, embedded forks need to migrate 19 It is quite certain that embedded developer need to migrate their kernel to support new feature that market requires. 2 1 need to migrate at some point 3 Then, how you can minimize kernel version migration cost?

embedded best practice It seems there is almost no chance for current embedded developer to join upstream activity as they are too busy. 20 However production developer eager to utilize latest kernel advanced capability to make their product competitive. ( like advanced power management, SMP utilization,.. etc ) Upstream team can hardly fulfill the demands of production team when it is demanded, because each development takes some time. So it need to be developed up front. So we need to establish unlinked but coordinated relation between upstream and production developer. reciprocal, bi-directional interaction between two separate teams

Use elts for embedded consolidation point 21 2.6.35 is current embedded LTS (elts) version confirmed at kernel summit 2010, based on request from embedded industry demand Andi Kleen is maintaining this version Industry can share this as common base kernel We need to establish future elts selection policy How long one elts version can be maintained How many elts can exist at same time Which version should be selected as next elts How and who maintains each elts 2.6.35 (elts1) 2.6.yy (elts3) 2011 2012 2.6.xx (elts2) 2013 2014

If you hit any problem with elts kernel back to today s latest (even under develop) kernel If you find any problem on elts kernel, the first thing you should do is backport from current latest kernel. check diff against today s latest kernel and try backport related fix if found 2.6.38 +3 2.6.37 +2 2.6.36 +1 elts continuous fix by upstream community 2.6.35 Your problem might be already fixed in latest kernel 22 2.6.39 +4

kernel migration category There are various code update on mainline kernel code 23 B: Bug fix / Correctness Fix C: Clean-up / Infrastructure Change / Documentation Change F: New Feature (not performance related) P: Performance Enhancement U: Usability Enhancement X: Unclassified Embedded forks can work together to make extended elts kernel for production development cost reduction Limited sense of elts = B only Extended sense of elts = C, F, P, U, X out of B

Forward port (new concept) 24 To minimize gap between production kernel (= elts) and community upstream (=latest development version), every fix, optimization done by each production company should be gathered and verified to make patch against current development version kernel. latest elts company A bug fix company B enhance company C clean up code gather each fix review patch creation

ideal reciprocal action 25 back port and forward port should happen concurrently to minimize future kernel migration cost use elts with required backport latest elts +3 +2 +1 forward each local fix patch to latest Your problem might be already fixed in latest kernel

How and who make this happen [ Down Stream (back port) ] choose elts version : community and industry maintain elts version : dedicated elts maintainer use elts for production : production developer apply latest fix, improve : production developer 26 [ Upstream (forward port) ] send fix to elts maintainer verify each local patch write patch review, correct patch apply embedded patch : production developer : elts maintainer : elts maintainer : community, elts maintainer : community

backport role of elts maintainer 27 apply latest bug-fix on elts version apply latest security-fix on elts version apply some new feature from new kernel (optional) forward port collect each vendor s local work result review and consolidate each patch migrate base kernel to current development version write patch to upstream and attempt to mainline it elts maintainer has key role to make new scheme workable

LF CEWG aims to drive this new scheme Linux Foundation start more focus on embedded 28 Yocto project CE Working group ( AKA CELF ) I want to add elts maintenance as part of CE WG task propose elts selection scheme to community maintain elts kernel for embedded user manage forward porting task industry Yocto CE WG Linux Foundation elts maintainer industry industry industry community

New strategy summary Community already define and maintain elts version LF CEWG try to hire elts maintainer for future elts kernel maintenance Embedded production developer can utilize elts kernel 29 If hit any issues, check latest kernel for community update If you needed private fix, please send it to elts maintainer elts maintainer can review each feedback from embedded production to pick up common proposal for latest kernel

Conclusion 30 Upstreaming and productization have completely separate motivation for their development. And embedded team can hardly send code to community upstream as a part of job. Embedded forks has not established any collaboration scheme that connects upstream and production. This is the reason behind the relatively low rate of embedded upstream contribution. We want to utilize elts for embedded common base and expect feedback from industry to feed forward good code made by industry developer work to latest kernel. LF CEWG try to make this new scheme workable.