Top Banner
GNU Toolchain Lifecycle Ryan S. Arnold
64

LAS16-106: GNU Toolchain Development Lifecycle

Apr 15, 2017

Download

Technology

Linaro
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: LAS16-106: GNU Toolchain Development Lifecycle

GNU Toolchain LifecycleRyan S. Arnold

Page 2: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 3: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 4: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 5: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

A man builds a fine house; and now he has a master, and a task for life; he is to furnish,

watch, show it, and keep it in repair, the rest of his days

- Ralph Waldo Emerson

Page 6: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 7: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Wrong!

Page 8: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

GNU/Linux Distribution : (Distro) is a formally supported collection of interoperable

programs.

These programs have been quality and integration tested in order to guarantee that

they are compatible.

Page 9: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 10: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

http://www.ubuntu.com/info/release-end-of-lifehttps://wiki.ubuntu.com/LTS

Page 11: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

http://www.ubuntu.com/info/release-end-of-lifehttps://wiki.ubuntu.com/LTS

Page 12: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

https://access.redhat.com/articles/3078https://access.redhat.com/support/policy/updates/errata/

RHEL6.0 GA 2010-11-09RHEL6.8 - 2016-05-10RHEL7.0 GA - 2014-06-09RHEL7.2 - 2015-11-19 (AArch64)

Page 13: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 14: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 15: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Protip: Submit Early & Submit Often

Page 16: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 17: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 18: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 19: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Toolchain Lifecycle - Linear Progression●Idea conception (micro-

architecture)●ISA●KABI (contract with user-space)●Kernel enablement●Platform identification●KABI implementation●Kernel upstreaming●ABI (binary contract between

programs)

●GNU Toolchain Implementation●Platform identification●ASM Instruction support●Codegen●Optimization●GNU Toolchain Upstreaming●Linux Distribution Adoption●Customer’s Hands●Linux Distro updates.

Page 20: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Wrong!

Page 21: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Idea Conception

Distro Adoption

KernelEnablement

CompilerEnablement

ToolchainUpstreaming

Page 22: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 23: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 24: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 25: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Phases●Phase 0 - Legal & Branding●Phase 1 - Platform Enablement●Phase 2 - ABI Enablement●Phase 3 - Optimization●Phase 4 - Distro Adoption

Page 26: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Phase 0 - Legal and Branding

Page 27: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Danger! If your legal dept is dragging their feet on approving upstream contribution your

schedule is in jeopardy.

Page 28: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 29: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Phase 1 - Platform Enablement

Page 30: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

ISA - Instruction Set Architecture

Page 31: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

It is a cardinal sin to not implement all required parts of the ISA

Page 32: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Models

Page 33: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Linux Kernel Platform Enablement

Page 34: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 35: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

www.kernel.org/category/releases.html

Page 36: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Assembler, Linker & Compiler Microarch Identification

Page 37: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

GCC Instruction-Set & Cost Model

Page 38: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Danger! Sometimes early enablement might give away details of the processor, such as information about the pipeline bandwidth.

Page 39: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 40: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Glibc Platform Identification

Page 41: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 42: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Protip: Get the KABI enablement code upstream as soon as possible!

Page 43: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Rev 1 Hardware

Page 44: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Phase 3 - ABI Enablement

Page 45: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Using The Existing ABI

Page 46: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Danger! You implemented all required parts of the ISA right? If not, you’ve defined a new ABI

that you have to implement.

Page 47: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Protip: Don’t use an ABI change as a way to squeeze out more performance (unless it

benefits all microarch variants)

Page 48: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

New ABI? Really?

Page 49: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

It is a cardinal sin to release binaries compiled with a pre-release ABI into the wild.

Page 50: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Danger! Just because you proposed the change doesn’t mean you get to own the ABI.

Page 51: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

GCC, Linker, and Assembler ABI Changes

Page 52: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Listen to your patch reviewers and implement changes requested or your update patches will

be ignored.

Page 53: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Danger! If you don’t respect the opinion of the person who will be maintaining your software,

then your contribution isn’t going to be respected.

Page 54: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Protip: Drop what you’re doing and turn around a patch re-spin as soon as possible

after a maintainer has reviewed your patch.

Page 55: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Protip: You might be asked to implement a generic solution in place of a number of arch-

specific implementations. Do it!

Page 56: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Glibc ABI Changes

Page 57: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

If you’re implementing a glibc ABI change/addition you need a complete release

cycle for evaluation.

Page 58: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Phase 3 - Upstreaming Optimizations

Page 59: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

GCC Optimizations

Page 60: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Glibc Optimizations & IFUNC

Page 61: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Phase 4 - Distro Adoption

Page 62: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

Page 63: LAS16-106: GNU Toolchain Development Lifecycle

ENGINEERS AND DEVICESWORKING TOGETHER

A man builds a fine house; and now he has a master, and a task for life; he is to furnish,

watch, show it, and keep it in repair, the rest of his days

- Ralph Waldo Emerson

Page 64: LAS16-106: GNU Toolchain Development Lifecycle

Thank You#LAS16

For further information: www.linaro.orgLAS16 keynotes and videos on: connect.linaro.org