Die Pengutronix Kernel-Beiträge in 2021

2022 hat begonnen, und obwohl Corona unsere Workflows stark verändert hat, hat das Pengutronix Team auch in diesem Jahr wieder etliche Beiträge zum Linux-Kernel geleistet. Das letzte Kernel-Release in 2020 war 5.10, das letzte in 2021 war 5.15 - schauen wir also, was sich dazwischen bei uns getan hat.

Wie üblich sind die Beiträge, die Pengutronix zum Linux-Kernel beisteuert, durch unsere Embedded Linux Projekte in der Industrie getrieben: Unsere Kunden bauen Geräte, wir schauen uns an, welche der benötigten Komponenten bereits im Kernel vorhanden sind und helfen dort, wo Dinge fehlen. Manchmal bedeutet das, Patche von Mailinglisten einzusammeln und so weit zu verbessern, bis sie startklar für Mainline sind; manchmal müssen Treiber von Grund auf neu geschrieben werden, und manchmal müssen Frameworks erst so weit verändert werden, dass bestimmte Funktionalitäten überhaupt realisiert werden können.

Patch-Serien werden in der Regel zunächst so geschrieben, dass der Fokus auf den Anforderungen des jeweiligen Projekts liegt; dann werden sie auf den Mailinglisten gepostet und durch die Community und die Maintainer begutachtet. Wenn ein Patch in Linux Mainline ankommt, hat er oft eine monate- bis jahrelange Geschichte hinter sich.

Alles in allem haben 675 Patche von Pengutronix in der Phase zwischen 5.10 und 5.15 ihren Weg in den Kernel gefunden - mehr als 1,8 Patche pro Tag. 15 Kollegen waren daran beteiligt:

Anz. Patche Autor Anz. Patche Autor
202 Uwe Kleine-König 9 Marco Felsch
149 Marc Kleine-Budde 8 Sascha Hauer
118 Oleksij Rempel 2 Jürgen Borleis
48 Lucas Stach 2 Rouven Czerwinski
47 Michael Tretter 1 Jan Lübbe
45 Philipp Zabel 1 Leonard Göhrs
26 Michael Grzeschik 1 Steffen Trumtrar
16 Ahmad Fatoum    

Dabei reflektiert die Anzahl der Patche allerdings selten den Aufwand, der ins Mainlining gesteckt wurde. Verglichen mit früheren Jahren haben wir es heute oft mit sehr viel komplexeren Patchserien zu tun, insbesondere wenn es um Hardware wie Grafiksysteme oder Netzwerk-Themen geht. Hier brauchen die Patchserien oft mehrere Review- und Überarbeitungsrunden, bis sie in Mainline angekommen sind. Letztlich geht es bei der Kernelentwicklung darum, Code mit extrem hoher Qualität zu schreiben, und dies ist in vielen Fällen - selbst bei kleineren Patchen - eine Menge Arbeit.

Für einen Überblick der bearbeiteten Themen schauen wir uns die größeren Baustellen an:

  • Uwe Kleine-Königs Patche drehten sich überwiegend um das PWM-Subsystem: 116 von 202 Patchen kamen in diesem Bereich zustande. PWM scheint auf den ersten Blick ein "einfaches" Thema zu sein, aber beim genauen Hinsehen fand sich viel undefiniertes Verhalten zwischen den verschiedenen Treibern. Viele Patche haben deshalb mit solchen Unklarheiten aufgeräumt und den Kernel in diesem Bereich insgesamt verbessert.

    Andere Patche kamen aus dem Bereich NFC, Input, SPI, hwmon, firmware, backlight, leds, tty, device tree, clock, i2c, rtc und dem Treiber-Core. Viele der Baustellen kamen dabei während der Arbeit an anderen Komponenten im Umfeld auf.

  • Marc Kleine-Budde maintaint das Linux CAN-Subsystem, so dass es keine Überraschung ist, dass 143 seiner 149 Patche aus diesem Bereich des Kernels kommen. Viele Änderungen betreffen Performance-Verbesserungen an einzelnen CAN-Treibern, die aus konkreten Kundenszenarien kommen. Allein der Treiber für den MCP251x von Microchip (ein oft eingesetzter CAN-Controller mit SPI-Schnittstelle) wurde mit 37 Patchen verbessert. Aber auch viele andere Treiber (rcar, c_can, tcan4x5x, flexcan, at91, hi311x, peak_usb, m_can) sowie das CAN-Subsystem insgesamt wurden optimiert.

  • Oleksij Rempel hat an vielen Themen rund um CAN / J1939 sowie im Bereich der Ethernet-Switche und "moderner" Ethernet-Physik wie 10-Base T1s gearbeitet.

  • Lucas Stach hat als Maintainer an Etnaviv, dem Open Source Treiber für Vivante-GPUs, gearbeitet. Daneben entstanden Patche im Bereich clk, power und gpcv2, die insbesondere im Rahmen der Arbeiten an den i.MX8M Derivaten aufkamen.

  • Michael Tretter hat hauptsächlich an der Xilinx Ultrascale-Familie und an den "allegro" Video Encoder- und Decodertreiber auf diesen Chips gearbeitet - eine große, komplexe Patchserie, die einen langen Weg bis zur Aufnahme in den Kernel hinter sich gebracht hat. UltraScale hat sich als eine hervorragende Plattform für kundenspezifisches Video-Prozessing herausgestellt - ein Themenbereich, der bei vielen Kunden zunehmend wichtig wurde.

  • Philipp Zabel maintaint das Reset-Subsystem im Kernel. Daneben hat er weiter an der CODA Einheit und weiteren i.MX Grafik- und Videothemen gearbeitet.

  • Michael Grzeschiks Aktivitäten lagen vor allem in zwei Bereichen: dem KSZ8795 Ethernet-Switch und USB UVC.

  • Ahmad Fatoum hat viele Bugfixes für i.MX8M beigesteuert, vor allem in den Bereichen Taktversorgung, TF-A Schnittstelle und Deferred Probing. Weiterhin hat er an STM32MP1, nvmem, dm crypt und Sensoren gearbeitet.

  • Marco Felsch, Sascha Hauer, Jürgen Borleis, Rouven Czerwinski, Jan Lübbe und Steffen Trumtrar waren mit SPI, ASoC, CODA, Ethernet Controllern und Switches, PWM, I2C, Etnaviv, ecryptfs, Quota, NAND Flash, ubifs, DMA auf i.MX, Regulatoren, OP-TEE und Netzwerk Timestamping beschäftigt.

  • Und schließlich hat unser Hardware-Kollege Leonard Göhrs seinen ersten Patch als Fix für ein ALSA-Sound-Problem auf PowerPC in den Kernel bekommen. :-)

Wenn man sich die beeindruckende Liste aus 675 Patches anschaut und all die Entwickler-Geschichten hinter sowohl kleinen Einzeiler-Patchen wie auch großen Serien kennt, denke ich, dass wir insgesamt mit den Ergebnissen aus 2021 zufrieden sein können. Es gab eine Menge Interaktion mit anderen Kernel-Entwicklern und -Maintainern, und wir haben eine Menge gelernt.

Last but not least wurden dabei eine ganze Menge Kundenthemen auf eine nachhaltige Weise gelöst. Probleme, die in Mainline gefixt sind, werden für andere Nutzer in Zukunft keine Schwierigkeiten mehr bereiten. Wir würden also freundlichst darum bitten, dass Sie, wenn Sie auf ein Problem stoßen, das wir (oder andere in der Community) bereits gelöst haben, sich dadurch erkenntlich zeigen, dass Sie Ihre Patche in Zukunft ebenfalls in Mainline bringen. :-)

Die Kernel-Historie geht zurück bis zur Version 2.5.0. Mit den Beiträgen aus diesem Jahr haben wir inzwischen 6278 Patche in Mainline.

Ein Frohes Neues Jahr!


Weiterführende Links

umpf - Git on a New Level

Moderne Softwareentwicklung ohne begleitende Versionsverwaltung wie Git ist heutzutage unvorstellbar - Änderungen am Quellcode sollen schließlich nachvollziehbar dokumentiert und beliebige Verssionsstände jederzeit einfach reproduziert werden können. Für Arbeiten an komplexeren Projekten wie etwa dem BSP ("Board Support Package") eines eingebetteten Systems mit mehreren Entwicklungssträngen skaliert ein bloßes Aufeinanderstapeln der einzelnen Änderungen jedoch nicht.


Pulse Width Modulation (PWM) is easy, isn't it? - Turning it off and on again

Part of Uwe Kleine-König's work at Pengutronix is to review PWM (Pulse Width Modulation) drivers. In addition, he also sometimes refactors existing drivers and the Linux kernel PWM subsystem in general.


Pengutronix at Embedded World 2022

Welcome to our booth at the Embedded World 2022 in Nürnberg!


CLT-2022: Voll verteilt!

Unter dem Motto "Voll verteilt" finden die Chemnitzer Linux Tage auch 2022 im virtuellen Raum statt. Wie auch im letzten Jahr, könnt ihr uns in der bunten Pixelwelt des Workadventures treffen und auf einen Schnack über Linux, Open Source, oder neue Entwicklungen vorbei kommen.


Pengutronix at FOSDEM 2021

"FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels. In 2021, they will gather online." -- FOSDEM


15 Years of i.MX in Mainline Linux

Today it has been 15 years since we mainlined support for Freescale/NXP's i.MX architecture in the Linux kernel! That was one small step for [a] man, one giant leap for (industrial Linux users') mankind :-) Here is some background about why it happened and what you might want to learn from history for your next embedded Linux project.