Porting Linux to a New Architecture, Done Right

Porting Linux to a New Architecture, Done Right

IBM Linux Technology Center Porting Linux to a new architecture, done right Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Overview 1 Status of new architecture ports 2 Typical approaches to new architectures 3 Lessons Learned 2 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right About me s390 architecture 2002-2005 PowerPC/Cell architecture 2005-now 32/64 bit syscall emulation Maintaining include/asm-generic Reviewing new architectures Learning about ARM 3 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Recently merged architectures 100000000 10000000 1000000 100000 arm xtensa avr32 blackfin mn10300 microblaze s*core tile 2.6.13 2.6.19 2.6.22 2.6.28 2.6.30 2.6.32 2.6.36 4 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Upcoming architectures nios II lm32 UniCore OpenRISC c64x MMIX nameless 48-bit architecture nameless DSP architecture 5 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right What makes architecture ports so hard? Typical approaches to new architectures 6 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Language barrier #1: English Homes of the current architecture maintainers 7 / 27 Arnd Bergmann c 2010 IBM Corporation pragmatically object-oriented freestanding ILP32/LP64 GNU 99 with static annotations and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C C 8 / 27 Arnd Bergmann c 2010 IBM Corporation pragmatically object-oriented freestanding ILP32/LP64 with static annotations and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C GNU C99 8 / 27 Arnd Bergmann c 2010 IBM Corporation pragmatically object-oriented freestanding ILP32/LP64 and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C GNU C99 with static annotations 8 / 27 Arnd Bergmann c 2010 IBM Corporation pragmatically object-oriented freestanding and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C ILP32/LP64 GNU C99 with static annotations 8 / 27 Arnd Bergmann c 2010 IBM Corporation pragmatically object-oriented and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C freestanding ILP32/LP64 GNU C99 with static annotations 8 / 27 Arnd Bergmann c 2010 IBM Corporation pragmatically and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C object-oriented freestanding ILP32/LP64 GNU C99 with static annotations 8 / 27 Arnd Bergmann c 2010 IBM Corporation and enforced coding style Porting Linux to a new architecture, done right Language barrier #2: C pragmatically object-oriented freestanding ILP32/LP64 GNU C99 with static annotations 8 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Language barrier #2: C pragmatically object-oriented freestanding ILP32/LP64 GNU C99 with static annotations and enforced coding style 8 / 27 Arnd Bergmann c 2010 IBM Corporation Noncoherent I/O Out-of-order I/O Memory management units Multiple ABIs Multiple ISAs Multiple platforms Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing 9 / 27 Arnd Bergmann c 2010 IBM Corporation Out-of-order I/O Memory management units Multiple ABIs Multiple ISAs Multiple platforms Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O 9 / 27 Arnd Bergmann c 2010 IBM Corporation Memory management units Multiple ABIs Multiple ISAs Multiple platforms Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O Out-of-order I/O 9 / 27 Arnd Bergmann c 2010 IBM Corporation Multiple ABIs Multiple ISAs Multiple platforms Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O Out-of-order I/O Memory management units 9 / 27 Arnd Bergmann c 2010 IBM Corporation Multiple ISAs Multiple platforms Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O Out-of-order I/O Memory management units Multiple ABIs 9 / 27 Arnd Bergmann c 2010 IBM Corporation Multiple platforms Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O Out-of-order I/O Memory management units Multiple ABIs Multiple ISAs 9 / 27 Arnd Bergmann c 2010 IBM Corporation Timekeeping Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O Out-of-order I/O Memory management units Multiple ABIs Multiple ISAs Multiple platforms 9 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Architectural challenges Symmetric Multiprocessing Noncoherent I/O Out-of-order I/O Memory management units Multiple ABIs Multiple ISAs Multiple platforms Timekeeping 9 / 27 Arnd Bergmann c 2010 IBM Corporation Copy from ARM Copy from Tile Do not copy at all! Porting Linux to a new architecture, done right Where to start Copy from x86 10 / 27 Arnd Bergmann c 2010 IBM Corporation Copy from x86 Copy from Tile Do not copy at all! Porting Linux to a new architecture, done right Where to start Copy from ARM 10 / 27 Arnd Bergmann c 2010 IBM Corporation Copy from x86 Copy from ARM Do not copy at all! Porting Linux to a new architecture, done right Where to start Copy from Tile 10 / 27 Arnd Bergmann c 2010 IBM Corporation Copy from x86 Copy from ARM Copy from Tile Porting Linux to a new architecture, done right Where to start Do not copy at all! 10 / 27 Arnd Bergmann c 2010 IBM Corporation One minimal syscall list! Cover all the simple implementations Porting Linux to a new architecture, done right Generic header files 42 versions of struct stat? 11 / 27 Arnd Bergmann c 2010 IBM Corporation Cover all the simple implementations Porting Linux to a new architecture, done right Generic header files 42 versions of struct stat? One minimal syscall list! 11 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Generic header files 42 versions of struct stat? One minimal syscall list! Cover all the simple implementations 11 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Generic Architecture template Early Boot code zImage compression Library functions device tree Trap handling Signal handling ptrace pci 12 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right User space: runtime glibc/eglibc uClibc klibc 13 / 27 Arnd Bergmann c 2010 IBM Corporation Embedded distribution buildroot yocto emdebian Busybox initramfs Porting Linux to a new architecture, done right User space: distro Full distribution Debian, Fedora, OpenSUSE, Ubuntu, Gentoo, ... 14 / 27 Arnd Bergmann c 2010 IBM Corporation Busybox initramfs Porting Linux to a new architecture, done right User space: distro Full distribution Debian, Fedora, OpenSUSE, Ubuntu, Gentoo, ... Embedded distribution buildroot yocto emdebian 14 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right User space: distro Full distribution Debian, Fedora, OpenSUSE, Ubuntu, Gentoo, ... Embedded distribution buildroot yocto emdebian Busybox initramfs 14 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lessons Learned 15 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #1 Start small 16 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #2 Generalize existing code for your special case 17 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #3 Understand the development process 18 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #4 Follow the upstream kernel 19 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #5 Debug your system with qemu with gdb 20 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #6 Simplify drivers using virtio and hvc 21 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #7 Describe SoC in a flattened device tree 22 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #8 Clean up after sparse and checkpatch 23 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #9 Run lockdep enabled kernels 24 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Lesson #10 Become a git master 25 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Legal Statement This work represents the view of the author and does not necessarily represent the view of IBM. IBM, IBM (logo), e-business (logo), pSeries, e (logo) server, and xSeries are trademarks or registered trademarks of International Business Machines Corporation in the United States and/or other countries. Linux is a registered trademark of Linus Torvalds. Other company, product, and service names may be trademarks or service marks of others. 26 / 27 Arnd Bergmann c 2010 IBM Corporation Porting Linux to a new architecture, done right Questions? 27 / 27 Arnd Bergmann c 2010 IBM Corporation.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    48 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us