# Bereinigung eines 16 Jahre alten Linux Kernel API
> [! hinweis]-
> Der Inhalt dieser Seite ist durch Audio/Video-Transkribtion und Text-Transformation aus dem Inhalt und Links dieser Quelle generiert.
Quelle: [https://fosdem.org/2025/schedule/event/fosdem-2025-4963-the-patient-brush-how-to-clean-up-a-16-year-old-linux-kernel-api/](https://fosdem.org/2025/schedule/event/fosdem-2025-4963-the-patient-brush-how-to-clean-up-a-16-year-old-linux-kernel-api/)
<video src="https://video.fosdem.org/2025/h2215/fosdem-2025-4963-the-patient-brush-how-to-clean-up-a-16-year-old-linux-kernel-api.av1.webm" controls></video>
## Zusammenfassung & Highlights:
Der Vortrag 'The Patient Brush: How to clean up a 16 year old Linux Kernel API' von Philipp Stanner auf der FOSDEM 2025 befasst sich mit der Herausforderung, alte und problematische APIs im Linux-Kernel zu modernisieren. Durch die Verwendung von Beispielen aus dem PCI-Subsystem wird gezeigt, wie technische Schulden abgebaut werden können, um die Stabilität und Wartbarkeit des Kernels zu verbessern.
**Einleitung in die API-Bereinigung**
Der Vortrag thematisiert die Komplexität der Bereinigung alter Linux-Kernel-APIs, die oft über Jahre hinweg gewachsen sind und von vielen Entwicklern genutzt werden. Diese APIs sind schwer zu ändern, da sie viele Subsysteme und Maintainer betreffen.
**Herausforderungen und Strategien**
Es wird erläutert, wie man eine Strategie entwickelt, um problematische APIs schrittweise über mehrere Kernel-Releases zu verbessern, ohne die Stabilität zu gefährden. Ein besonderer Fokus liegt auf der Kommunikation mit den Maintainern, um die notwendigen Änderungen zu implementieren.
**Technische Details und Lösungen**
Philipp Stanner erklärt, wie die alte API durch eine neue, einfachere Alternative ersetzt werden kann, die robuster und wartungsfreundlicher ist. Die schrittweise Portierung von Treibern und die schlussendliche Entfernung der alten API werden detailliert beschrieben.
**Schlussfolgerungen und Empfehlungen**
Abschließend gibt der Vortrag Empfehlungen für Entwickler, die zur Kernel-Entwicklung beitragen möchten, und ermutigt dazu, sich aktiv an der Verbesserung bestehender Codebasen zu beteiligen.
## Bedeutung für eine öko-soziale Transformation
Die Bereinigung veralteter Kernel-APIs hat direkte Auswirkungen auf die Nachhaltigkeit und Wartbarkeit von Software, was für eine ökosoziale Transformation essenziell ist. Eine stabile und wartungsfreundliche Software-Infrastruktur ermöglicht es, Ressourcen effizienter zu nutzen und technische Schulden abzubauen. Eco-Social Designer können von den vorgestellten Methoden profitieren, indem sie ähnliche Prinzipien auf ihre Projekte anwenden, um nachhaltige und soziale Softwarelösungen zu entwickeln. Eine Herausforderung besteht jedoch in der Koordination und Kommunikation zwischen verschiedenen Entwicklern und Maintainern, was technologische und politische Hürden mit sich bringt.
## Slides:
| | |
| --- | --- |
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_001.jpg\|300]] | Philipp Stanner, ein Kernel-Ingenieur für GPUs bei Red Hat, stellt in diesem Vortrag Strategien zur Bereinigung eines 16 Jahre alten Linux Kernel API vor. Er ist unter dem Handle 'phasta' auf OFTC erreichbar und kann über
[email protected] kontaktiert werden.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_002.jpg\|300]] | Der Vortrag kritisiert alten Code, nicht aber seine Autoren. Ein anonymes Zitat eines ehemaligen Kollegen hebt hervor, dass alle Entwickler letztlich erkennen, dass niemand perfekt programmieren kann.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_003.jpg\|300]] | Das PCI-Subsystem ist über 20 Jahre alt und wird als wichtigster Bus in Computern beschrieben. Es hat derzeit nur einen Vollzeit-Maintainer und enthält mehrere problematische APIs, die potenzielle Überläufe und Lecks verursachen können.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_004.jpg\|300]] | PCI besteht aus Geräten mit Basisadressregistern (BARs), die in den virtuellen Adressraum des Systems abgebildet werden müssen. Verschiedene Funktionen wie pci_iomap() und pcim_iomap_regions() werden für diese Abbildung verwendet.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_005.jpg\|300]] | Die Funktion pcim_iomap_table() im PCI-Subsystem, geschrieben zwischen 2007 und 2009, ist schwer verständlich. Ihre genaue Funktion ist unklar, weshalb nach Nutzern gesucht wird, um ihren Zweck zu verstehen.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_006.jpg\|300]] | Die Funktion pcim_iomap_regions() reserviert und bildet einen BAR über eine Bitmaske ab. Die Adresse wird dann über die pcim_iomap_table()-Funktion abgerufen, was zu einer unübersichtlichen und fehleranfälligen Implementierung führt.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_007.jpg\|300]] | Die ursprüngliche Intention der API war es, mehrere BARs mit einem Aufruf über eine Bitmaske anzufordern. Da C-Funktionen kaum mehrere Zeiger zurückgeben können, wurde eine Tabellenfunktion zur Adressierung dieser IO-Mappings benötigt.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_008.jpg\|300]] | Die Tabellenfunktion kann keine Grenzen überprüfen, was zu Überläufen führen kann. Da PCI-Geräte maximal sechs BARs haben und die Bitmaske nur 32 Bits umfasst, ist die API nicht sehr erweiterbar.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_009.jpg\|300]] | Ein Beispiel aus dem Kernel zeigt, dass die API zu hacky Implementierungen führt, bei denen Bitmasken und Verschiebungen verwendet werden, um mehrere BARs anzufordern, was den Code schwer verständlich macht.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_010.jpg\|300]] | Eine Suche im Kernel zeigt 131 Nutzer der API, die fast alle nur einen BAR anfordern. Dies zeigt, dass die API überentwickelt ist und eine einfachere Alternative benötigt wird.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_011.jpg\|300]] | Aufgrund der vielen Nutzer und betroffenen Subsysteme ist es nicht möglich, die API auf einmal zu ersetzen. Der Prozess erfordert das Einholen von Reviews und Acknowledgements von vielen Maintainern.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_012.jpg\|300]] | Vor der Lösung verwenden alle Treiber pcim_iomap_regions() und pcim_iomap_table(), um die IO-Adressen zu erhalten, was zu einer komplexen und fehleranfälligen Struktur führt.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_013.jpg\|300]] | Der erste Schritt zur Lösung besteht darin, eine einfachere Alternative zu schaffen, die eine direkte Abbildung eines einzelnen BARs ermöglicht, ohne die komplexe Tabellenstruktur.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_014.jpg\|300]] | Im zweiten Schritt werden die ersten Nutzer auf die neue API portiert, während die alte API als veraltet markiert wird. Neue Treiber können sofort die neue Funktion nutzen.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_015.jpg\|300]] | Nach Jahren der schrittweisen Portierung aller Nutzer kann die alte API entfernt werden, und es bleibt eine saubere, einfache Funktion, die eine robuste Abbildung der BARs ermöglicht.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_016.jpg\|300]] | Für Entwickler, die zum Kernel beitragen möchten, wird empfohlen, den Code zu durchsuchen, bekannte Probleme zu beheben und bei Bedarf die Maintainer um Unterstützung zu bitten.
| ![[FOSDEM 2025/assets/The-Patient-Brush-How-to-clean-up-a-16-year-old-Li/preview_017.jpg\|300]] | Der Vortrag endet mit dem Wunsch nach 'Happy Hacking' und ermutigt die Teilnehmer, sich an der Kernel-Entwicklung zu beteiligen.
## Links
[Slides](https://fosdem.org/2025/events/attachments/fosdem-2025-4963-the-patient-brush-how-to-clean-up-a-16-year-old-linux-kernel-api/slides/238849/stanner_p_zWtXchf.pdf)
[API Cleanup Patch Series v7](https://example.com/api-cleanup-patch-series-v7)
[Video recording (AV1/WebM)](https://video.fosdem.org/2025/h2215/fosdem-2025-4963-the-patient-brush-how-to-clean-up-a-16-year-old-linux-kernel-api.av1.webm)
[Video recording (MP4)](https://video.fosdem.org/2025/h2215/fosdem-2025-4963-the-patient-brush-how-to-clean-up-a-16-year-old-linux-kernel-api.av1.mp4)
[Video recording subtitle file (VTT)](https://example.com/video-recording-subtitle-file.vtt)
[Chat room(web)](https://example.com/chat-room-web)
[Chat room(app)](https://example.com/chat-room-app)
[Submit Feedback](https://example.com/submit-feedback)