SlideShare a Scribd company logo
Upstreaming 101
Daniel Lezcano
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Introduction
● This presentation is focused on upstreaming the Linux
code
● What means upstreaming ?
● The Linux kernel development cycle
● The Linux kernel code organization
● Contributions
● Writing one patch
● Writing several patches
● Conclusion
● Introducing Upstreaming 201
ENGINEERS
AND DEVICES
WORKING
TOGETHER
What is upstreaming ?
● Bring your private changes to the mainstream kernel
● Be prepared to:
○ restart from scratch
○ change your approach
○ be part of the OSS community
● No deadline, no schedule, no obligation to take a patch
○ Linux is evolution, best proposed solution wins
○ Consensus is the key
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Why upstream ?
● The Linux kernel has one rule: no regression
○ The community won’t break your code
● The submitted code will be reviewed in detail
○ Better quality
● The community will give support
○ Better knowledge
● Stop porting out of tree code to newer kernel
○ Save money and effort
ENGINEERS
AND DEVICES
WORKING
TOGETHER
The Linux kernel development cycle
1. Iterative release candidates: v4.10-rcX, up to -rc8
○ Usually every Sunday
2. New release: v4.10
3. Merge window
4. New release candidate: v4.11-rc1
5. … and so on
ENGINEERS
AND DEVICES
WORKING
TOGETHER
The Linux kernel development cycle
● A new release every 3 months
● When to send patches?
○ Fixes: anytime
○ New code and cleanup: depend on the maintainer
● How long is the merge window?
○ The merge window lasts two weeks
● How to know if the merge window is happening?
○ As soon as there is a new release
● How to know if the merge window is finished?
○ As soon as there is a -rc1
ENGINEERS
AND DEVICES
WORKING
TOGETHER
The Linux kernel development cycle
● Automatic with a RSS feed:
○ https://www.kernel.org/feeds/kdist.xml
● Manually by polling:
○ https://www.kernel.org/
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Linux-next : catching the issues early
● Linux-next integrates all the different trees
○ Kudos to Stephen Rothwell
● Image of the future Linux release ahead of the schedule
● Testing with this tree allows to catch the bugs before they
hit mainline
ENGINEERS
AND DEVICES
WORKING
TOGETHER
How to start contributing ?
● Code review
○ Cleanups
○ Trivial fixes
○ Potential issue
● Compilation test coverage
○ Cross compile and fix errors / warnings
○ Use rare compilation option (eg. headers_check, sparse, …)
● Communicate
○ Dig into mailing lists to help people
○ Review patches
● Test linux-next
○ Boot and fix bugs
○ Report compilation warnings
● Debug
○ https://bugzilla.kernel.org
ENGINEERS AND DEVICES
WORKING TOGETHER
Linaro contribution for 4.9
Total 16592 patches
kernel: 642
scripts: 65
arch: 4742
drivers: 9835
lib: 33
net: 463
mm: 34
block: 30
fs: 143
tools: 120
Source : http://www.remword.com/kps_result/
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Linux code organization
● Huge number of files, more than 40,000
● Organized in subsystems
● Posix implementation
● Architecture specific
● Frameworks
● Drivers
● Network stack
ENGINEERS AND DEVICES
WORKING TOGETHER
Linux kernel code organization
Topmost Linux dir
kernel
IPC
net
tools
scripts arch drivers
mm
lib
block
fs
net
usb
clock
arm64
mm
arm
ENGINEERS AND DEVICES
WORKING TOGETHER
Linux kernel code organization
Topmost Linux dir
kernel
IPC
net
mm
block
fs
● Generic code and framework
● Scheduling
● Process management
● POSIX kernel implementation
● Interrupt handling
● Network protocols
● Memory management
● Block device management
● File systems
● Power management
ENGINEERS AND DEVICES
WORKING TOGETHER
Linux kernel code organization
Topmost Linux dir
lib ● Generic code
● Integer math: CRC, div
● List manipulation, red-black tree
● String manipulation
● … a lot of useful functions
ENGINEERS AND DEVICES
WORKING TOGETHER
Linux kernel code organization
Topmost Linux dir
tools
scripts ● Scripts to help making Linux better
○ Patch checking, header check
○ Kernel symbol size comparison
○ ...
● Userspace tools with a dependency on the
kernel sources
ENGINEERS AND DEVICES
WORKING TOGETHER
Linux kernel code organization
Topmost Linux dir
arch
arm64
mm
arm
● Architecture specific code
● Memory management, locks, ...
● Everything which is arch specific
● Fills the gaps left by the generic code
ENGINEERS AND DEVICES
WORKING TOGETHER
Linux kernel code organization
Topmost Linux dir
drivers
net
usb
clock
● All peripherals drivers
● Contains a generic framework
● Peripheral specific code based on the
generic framework above
● Base object for the driver model
ENGINEERS
AND DEVICES
WORKING
TOGETHER
What is a maintainer ?
● Responsible of a part of the Linux kernel code
● Ensure the code complies with some rules:
○ Coding style
○ Consistency
○ Consensus
○ Technically relevant
● A maintainer is a gatekeeper
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Maintainership
● Each directory falls under the umbrella of a maintainer
● Each maintainer has its own tree
● Each proposed change must stick to the relevant tree
● After a kernel release, all the maintainers’ tree are merged
together : it is the merge window
● Topmost maintainer is Linus Torvalds
● All maintainers are listed in the MAINTAINERS file
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+net v4.10+tip
v4.10+tip v4.10+tip
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+net v4.10+tip
v4.10+tip v4.10+tip
patch
patch
patch
patch
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+net v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 1
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 1
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 1
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+tip++
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 2
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10
v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 2
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10++++
v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 2
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10++++
v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS AND DEVICES
WORKING TOGETHER
Example of a merge process - step 3
kernel
irq
time
drivers
clocksource
drivers
irqchip
drivers
irqchip
drivers
clocksource
kernel
irq
time
drivers
irqchip
drivers
clocksource
net
ipv4
Linus Torvald’s tree - v4.10-rc1
v4.10+tip
v4.10+tip+irqchip v4.10+tip+clocksource
net
ipv4
v4.10+net
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Communication
● All development communication through the mailing lists
○ Important mailing lists for Linaro: lkml@, lakml@
○ MAINTAINERS file gives the subsystem <-> mailing list
○ http://vger.kernel.org/vger-lists.html
● Public discussion, no point-to-point
○ Reply-all always
● Opensource events: Linux Plumbers Conference,
Embedded Linux Conference, Linaro Connect
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Where to begin ?
● Send a simple contribution
○ But don’t flood with too trivial patches
■ Read trivial@kernel.org rules
● One example with a checkpatch script
○ Run it in a directory where you will be working in the future
■ Eg. drivers/acpi
○ Target one ERROR spotted by checkpatch
○ Beware of false positives
for i in $(ls drivers/acpi/utils.c); do
./scripts/checkpatch -f $i
done
ENGINEERS
AND DEVICES
WORKING
TOGETHER
A simple contribution
● Compile, test first and then commit
○ Even if the change is trivial
● Write a nice description:
○ Why and what
○ One simple sentence prefixed with the subsystem name ...
○ … followed by a more detailed description
ENGINEERS
AND DEVICES
WORKING
TOGETHER
A simple contribution
● Read the Digital Certificate of Origin:
○ Documentation/process/submitting-patches.rst
● Make sure you fully understand what that means
○ You are legally responsible of your changes
● When committing, add your Signed-off-by
● Don’t send more than 2 trivial changes
ENGINEERS
AND DEVICES
WORKING
TOGETHER
A simple contribution
● A list of examples:
○ https://goo.gl/q7NqcZ : Fixing checkpatch errors
○ https://goo.gl/JCn2y : Fixing missing kfree
○ https://goo.gl/ASrbOU : Remove unused parameter
○ https://goo.gl/uiktEV : Remove pointless code
ENGINEERS
AND DEVICES
WORKING
TOGETHER
A more complex contribution
● Split the changes into several patches
● Bring the changes step by step, incremental changes
● Make sure the changes are git-bisect safe
○ Not following this rule will hurt your karma in the community
● Set the scene by cleaning up the place before sending a
complex contribution
ENGINEERS
AND DEVICES
WORKING
TOGETHER
A more complex contribution
● Some examples:
○ Changing the loopback to be multi-instantiated:
■ https://goo.gl/q6w1Ay : Change the static variable to a pointer
■ https://goo.gl/tdNth4 : Dynamically allocate the loopback
○ A cleanup to catch clocksource initialization error
■ https://lkml.org/lkml/2016/6/16/781
○ A very complex change for CPU hotplug:
■ https://goo.gl/c2NpDY : A long description of the changes
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Be sure you have the right mindset
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Be altruist
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Be polite
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Be patient
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Be humble
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Be factual
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Always take into account the comments
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Always take into account the comments
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
Always take into account the
comments
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
● Read all the documentation Documentation/process/*:
○ Coding style rules
○ Give all the details introduced in this presentation
○ Digital Certificate of Origin
● More material at:
○ https://kernelnewbies.org
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Before going to Upstreaming 201
● Ready to send patches for review ?
○ No … I’m scared of what they’ll think of my code
● Be sure you have the right mindset:
○ Be altruist
○ Be polite
○ Be patient
○ Be humble
○ Always take into account the comments
■ You can disagree, stick to technical reasons
○ Comments can be harsh, stay polite and factual
■ Stick to technical reasons
○ Don’t be afraid, increase self confidence
■ Read the kernel documentation
■ Be altruist to encourage yourself to have a positive attitude
Thank You
#BUD17
For further information: www.linaro.org
BUD17 keynotes and videos on: connect.linaro.org

More Related Content

What's hot

BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr
Linaro
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linaro
 
Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102
Linaro
 
BUD17-510: Power management in Linux together with secure firmware
BUD17-510: Power management in Linux together with secure firmwareBUD17-510: Power management in Linux together with secure firmware
BUD17-510: Power management in Linux together with secure firmware
Linaro
 
BKK16-306 ART ii
BKK16-306 ART iiBKK16-306 ART ii
BKK16-306 ART ii
Linaro
 
BKK16-304 The State of GDB on AArch64
BKK16-304 The State of GDB on AArch64BKK16-304 The State of GDB on AArch64
BKK16-304 The State of GDB on AArch64
Linaro
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201
Linaro
 
LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101
Linaro
 
P4 to OpenDataPlane Compiler - BUD17-304
P4 to OpenDataPlane Compiler - BUD17-304P4 to OpenDataPlane Compiler - BUD17-304
P4 to OpenDataPlane Compiler - BUD17-304
Linaro
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need it
Linaro
 
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
Linaro
 
BKK16-106 ODP Project Update
BKK16-106 ODP Project UpdateBKK16-106 ODP Project Update
BKK16-106 ODP Project Update
Linaro
 
BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!
Linaro
 
Las16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLas16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - status
Linaro
 
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
Linaro
 
BUD17-309: IRQ prediction
BUD17-309: IRQ prediction BUD17-309: IRQ prediction
BUD17-309: IRQ prediction
Linaro
 
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
Linaro
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 
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
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
Linaro
 

What's hot (20)

BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
 
Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102
 
BUD17-510: Power management in Linux together with secure firmware
BUD17-510: Power management in Linux together with secure firmwareBUD17-510: Power management in Linux together with secure firmware
BUD17-510: Power management in Linux together with secure firmware
 
BKK16-306 ART ii
BKK16-306 ART iiBKK16-306 ART ii
BKK16-306 ART ii
 
BKK16-304 The State of GDB on AArch64
BKK16-304 The State of GDB on AArch64BKK16-304 The State of GDB on AArch64
BKK16-304 The State of GDB on AArch64
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201
 
LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101
 
P4 to OpenDataPlane Compiler - BUD17-304
P4 to OpenDataPlane Compiler - BUD17-304P4 to OpenDataPlane Compiler - BUD17-304
P4 to OpenDataPlane Compiler - BUD17-304
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need it
 
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
 
BKK16-106 ODP Project Update
BKK16-106 ODP Project UpdateBKK16-106 ODP Project Update
BKK16-106 ODP Project Update
 
BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!
 
Las16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLas16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - status
 
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
 
BUD17-309: IRQ prediction
BUD17-309: IRQ prediction BUD17-309: IRQ prediction
BUD17-309: IRQ prediction
 
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
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 
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...
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
 

Similar to BUD17-TR02: Upstreaming 101

RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
Kangaroot
 
SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101
Linaro
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
Emertxe Information Technologies Pvt Ltd
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
Linaro
 
Lcu14 312-Introduction to the Ecosystem day
Lcu14 312-Introduction to the Ecosystem day Lcu14 312-Introduction to the Ecosystem day
Lcu14 312-Introduction to the Ecosystem day
Linaro
 
Hacking the Linux Kernel - An Introduction
Hacking the Linux Kernel - An IntroductionHacking the Linux Kernel - An Introduction
Hacking the Linux Kernel - An Introduction
Levente Kurusa
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
Sage Sharp
 
DENT - Mini Summit - UWG.pdf
DENT - Mini Summit - UWG.pdfDENT - Mini Summit - UWG.pdf
DENT - Mini Summit - UWG.pdf
SridharRao79
 
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
From Zero to Hero - Contribute to Linux Kernel in 15 MinutesFrom Zero to Hero - Contribute to Linux Kernel in 15 Minutes
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
GlobalLogic Ukraine
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
Thomas Graf
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
Linaro
 
Linux concept workshop
Linux concept workshopLinux concept workshop
Linux concept workshop
Tahmoures Shabanian
 
Cloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps ApproachCloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps Approach
Nicola Ferraro
 
history_of_linux lec 7.pptx
history_of_linux lec 7.pptxhistory_of_linux lec 7.pptx
history_of_linux lec 7.pptx
touseeqzulfiqar1
 
LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)
LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)
LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)
Docker, Inc.
 
Linux a free and open source operating system
Linux a free and open source operating systemLinux a free and open source operating system
Linux a free and open source operating system
banwait
 
Linux a free and open source operating system
Linux a free and open source operating systemLinux a free and open source operating system
Linux a free and open source operating system
banwait
 
George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1
Linaro
 

Similar to BUD17-TR02: Upstreaming 101 (20)

RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
 
SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
Lcu14 312-Introduction to the Ecosystem day
Lcu14 312-Introduction to the Ecosystem day Lcu14 312-Introduction to the Ecosystem day
Lcu14 312-Introduction to the Ecosystem day
 
Hacking the Linux Kernel - An Introduction
Hacking the Linux Kernel - An IntroductionHacking the Linux Kernel - An Introduction
Hacking the Linux Kernel - An Introduction
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
 
DENT - Mini Summit - UWG.pdf
DENT - Mini Summit - UWG.pdfDENT - Mini Summit - UWG.pdf
DENT - Mini Summit - UWG.pdf
 
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
From Zero to Hero - Contribute to Linux Kernel in 15 MinutesFrom Zero to Hero - Contribute to Linux Kernel in 15 Minutes
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
Linux concept workshop
Linux concept workshopLinux concept workshop
Linux concept workshop
 
Cloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps ApproachCloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps Approach
 
history_of_linux lec 7.pptx
history_of_linux lec 7.pptxhistory_of_linux lec 7.pptx
history_of_linux lec 7.pptx
 
LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)
LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)
LinuxKit: the first five months by Justin Cormack & Riyaz Faizullabhoy (Docker)
 
Linux a free and open source operating system
Linux a free and open source operating systemLinux a free and open source operating system
Linux a free and open source operating system
 
Linux a free and open source operating system
Linux a free and open source operating systemLinux a free and open source operating system
Linux a free and open source operating system
 
George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1
 

More from Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Linaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Linaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Linaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
Linaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
Linaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
Linaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
Linaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
Linaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
Linaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
Linaro
 

More from Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Recently uploaded

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 

Recently uploaded (20)

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 

BUD17-TR02: Upstreaming 101

  • 2. ENGINEERS AND DEVICES WORKING TOGETHER Introduction ● This presentation is focused on upstreaming the Linux code ● What means upstreaming ? ● The Linux kernel development cycle ● The Linux kernel code organization ● Contributions ● Writing one patch ● Writing several patches ● Conclusion ● Introducing Upstreaming 201
  • 3. ENGINEERS AND DEVICES WORKING TOGETHER What is upstreaming ? ● Bring your private changes to the mainstream kernel ● Be prepared to: ○ restart from scratch ○ change your approach ○ be part of the OSS community ● No deadline, no schedule, no obligation to take a patch ○ Linux is evolution, best proposed solution wins ○ Consensus is the key
  • 4. ENGINEERS AND DEVICES WORKING TOGETHER Why upstream ? ● The Linux kernel has one rule: no regression ○ The community won’t break your code ● The submitted code will be reviewed in detail ○ Better quality ● The community will give support ○ Better knowledge ● Stop porting out of tree code to newer kernel ○ Save money and effort
  • 5. ENGINEERS AND DEVICES WORKING TOGETHER The Linux kernel development cycle 1. Iterative release candidates: v4.10-rcX, up to -rc8 ○ Usually every Sunday 2. New release: v4.10 3. Merge window 4. New release candidate: v4.11-rc1 5. … and so on
  • 6. ENGINEERS AND DEVICES WORKING TOGETHER The Linux kernel development cycle ● A new release every 3 months ● When to send patches? ○ Fixes: anytime ○ New code and cleanup: depend on the maintainer ● How long is the merge window? ○ The merge window lasts two weeks ● How to know if the merge window is happening? ○ As soon as there is a new release ● How to know if the merge window is finished? ○ As soon as there is a -rc1
  • 7. ENGINEERS AND DEVICES WORKING TOGETHER The Linux kernel development cycle ● Automatic with a RSS feed: ○ https://www.kernel.org/feeds/kdist.xml ● Manually by polling: ○ https://www.kernel.org/
  • 8. ENGINEERS AND DEVICES WORKING TOGETHER Linux-next : catching the issues early ● Linux-next integrates all the different trees ○ Kudos to Stephen Rothwell ● Image of the future Linux release ahead of the schedule ● Testing with this tree allows to catch the bugs before they hit mainline
  • 9. ENGINEERS AND DEVICES WORKING TOGETHER How to start contributing ? ● Code review ○ Cleanups ○ Trivial fixes ○ Potential issue ● Compilation test coverage ○ Cross compile and fix errors / warnings ○ Use rare compilation option (eg. headers_check, sparse, …) ● Communicate ○ Dig into mailing lists to help people ○ Review patches ● Test linux-next ○ Boot and fix bugs ○ Report compilation warnings ● Debug ○ https://bugzilla.kernel.org
  • 10. ENGINEERS AND DEVICES WORKING TOGETHER Linaro contribution for 4.9 Total 16592 patches kernel: 642 scripts: 65 arch: 4742 drivers: 9835 lib: 33 net: 463 mm: 34 block: 30 fs: 143 tools: 120 Source : http://www.remword.com/kps_result/
  • 11. ENGINEERS AND DEVICES WORKING TOGETHER Linux code organization ● Huge number of files, more than 40,000 ● Organized in subsystems ● Posix implementation ● Architecture specific ● Frameworks ● Drivers ● Network stack
  • 12. ENGINEERS AND DEVICES WORKING TOGETHER Linux kernel code organization Topmost Linux dir kernel IPC net tools scripts arch drivers mm lib block fs net usb clock arm64 mm arm
  • 13. ENGINEERS AND DEVICES WORKING TOGETHER Linux kernel code organization Topmost Linux dir kernel IPC net mm block fs ● Generic code and framework ● Scheduling ● Process management ● POSIX kernel implementation ● Interrupt handling ● Network protocols ● Memory management ● Block device management ● File systems ● Power management
  • 14. ENGINEERS AND DEVICES WORKING TOGETHER Linux kernel code organization Topmost Linux dir lib ● Generic code ● Integer math: CRC, div ● List manipulation, red-black tree ● String manipulation ● … a lot of useful functions
  • 15. ENGINEERS AND DEVICES WORKING TOGETHER Linux kernel code organization Topmost Linux dir tools scripts ● Scripts to help making Linux better ○ Patch checking, header check ○ Kernel symbol size comparison ○ ... ● Userspace tools with a dependency on the kernel sources
  • 16. ENGINEERS AND DEVICES WORKING TOGETHER Linux kernel code organization Topmost Linux dir arch arm64 mm arm ● Architecture specific code ● Memory management, locks, ... ● Everything which is arch specific ● Fills the gaps left by the generic code
  • 17. ENGINEERS AND DEVICES WORKING TOGETHER Linux kernel code organization Topmost Linux dir drivers net usb clock ● All peripherals drivers ● Contains a generic framework ● Peripheral specific code based on the generic framework above ● Base object for the driver model
  • 18. ENGINEERS AND DEVICES WORKING TOGETHER What is a maintainer ? ● Responsible of a part of the Linux kernel code ● Ensure the code complies with some rules: ○ Coding style ○ Consistency ○ Consensus ○ Technically relevant ● A maintainer is a gatekeeper
  • 19. ENGINEERS AND DEVICES WORKING TOGETHER Maintainership ● Each directory falls under the umbrella of a maintainer ● Each maintainer has its own tree ● Each proposed change must stick to the relevant tree ● After a kernel release, all the maintainers’ tree are merged together : it is the merge window ● Topmost maintainer is Linus Torvalds ● All maintainers are listed in the MAINTAINERS file
  • 20. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 net ipv4 Linus Torvald’s tree - v4.10 v4.10+net v4.10+tip v4.10+tip v4.10+tip
  • 21. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 net ipv4 Linus Torvald’s tree - v4.10 v4.10+net v4.10+tip v4.10+tip v4.10+tip patch patch patch patch
  • 22. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 net ipv4 Linus Torvald’s tree - v4.10 v4.10+net v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource
  • 23. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 1 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10 v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 24. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 1 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10 v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 25. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 1 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10 v4.10+tip++ v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 26. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 2 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10 v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 27. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 2 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10++++ v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 28. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 2 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10++++ v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 29. ENGINEERS AND DEVICES WORKING TOGETHER Example of a merge process - step 3 kernel irq time drivers clocksource drivers irqchip drivers irqchip drivers clocksource kernel irq time drivers irqchip drivers clocksource net ipv4 Linus Torvald’s tree - v4.10-rc1 v4.10+tip v4.10+tip+irqchip v4.10+tip+clocksource net ipv4 v4.10+net
  • 30. ENGINEERS AND DEVICES WORKING TOGETHER Communication ● All development communication through the mailing lists ○ Important mailing lists for Linaro: lkml@, lakml@ ○ MAINTAINERS file gives the subsystem <-> mailing list ○ http://vger.kernel.org/vger-lists.html ● Public discussion, no point-to-point ○ Reply-all always ● Opensource events: Linux Plumbers Conference, Embedded Linux Conference, Linaro Connect
  • 31. ENGINEERS AND DEVICES WORKING TOGETHER Where to begin ? ● Send a simple contribution ○ But don’t flood with too trivial patches ■ Read trivial@kernel.org rules ● One example with a checkpatch script ○ Run it in a directory where you will be working in the future ■ Eg. drivers/acpi ○ Target one ERROR spotted by checkpatch ○ Beware of false positives for i in $(ls drivers/acpi/utils.c); do ./scripts/checkpatch -f $i done
  • 32. ENGINEERS AND DEVICES WORKING TOGETHER A simple contribution ● Compile, test first and then commit ○ Even if the change is trivial ● Write a nice description: ○ Why and what ○ One simple sentence prefixed with the subsystem name ... ○ … followed by a more detailed description
  • 33. ENGINEERS AND DEVICES WORKING TOGETHER A simple contribution ● Read the Digital Certificate of Origin: ○ Documentation/process/submitting-patches.rst ● Make sure you fully understand what that means ○ You are legally responsible of your changes ● When committing, add your Signed-off-by ● Don’t send more than 2 trivial changes
  • 34. ENGINEERS AND DEVICES WORKING TOGETHER A simple contribution ● A list of examples: ○ https://goo.gl/q7NqcZ : Fixing checkpatch errors ○ https://goo.gl/JCn2y : Fixing missing kfree ○ https://goo.gl/ASrbOU : Remove unused parameter ○ https://goo.gl/uiktEV : Remove pointless code
  • 35. ENGINEERS AND DEVICES WORKING TOGETHER A more complex contribution ● Split the changes into several patches ● Bring the changes step by step, incremental changes ● Make sure the changes are git-bisect safe ○ Not following this rule will hurt your karma in the community ● Set the scene by cleaning up the place before sending a complex contribution
  • 36. ENGINEERS AND DEVICES WORKING TOGETHER A more complex contribution ● Some examples: ○ Changing the loopback to be multi-instantiated: ■ https://goo.gl/q6w1Ay : Change the static variable to a pointer ■ https://goo.gl/tdNth4 : Dynamically allocate the loopback ○ A cleanup to catch clocksource initialization error ■ https://lkml.org/lkml/2016/6/16/781 ○ A very complex change for CPU hotplug: ■ https://goo.gl/c2NpDY : A long description of the changes
  • 37. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 Be sure you have the right mindset
  • 38. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 Be altruist
  • 43. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 Always take into account the comments
  • 44. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 Always take into account the comments
  • 45. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 Always take into account the comments
  • 46. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 ● Read all the documentation Documentation/process/*: ○ Coding style rules ○ Give all the details introduced in this presentation ○ Digital Certificate of Origin ● More material at: ○ https://kernelnewbies.org
  • 47. ENGINEERS AND DEVICES WORKING TOGETHER Before going to Upstreaming 201 ● Ready to send patches for review ? ○ No … I’m scared of what they’ll think of my code ● Be sure you have the right mindset: ○ Be altruist ○ Be polite ○ Be patient ○ Be humble ○ Always take into account the comments ■ You can disagree, stick to technical reasons ○ Comments can be harsh, stay polite and factual ■ Stick to technical reasons ○ Don’t be afraid, increase self confidence ■ Read the kernel documentation ■ Be altruist to encourage yourself to have a positive attitude
  • 48. Thank You #BUD17 For further information: www.linaro.org BUD17 keynotes and videos on: connect.linaro.org