Höher und weiter – Die Neuerungen von Linux 2.6.28
Größere Umbauarbeiten am Code für Speicher-, Datenträger- und GPU-Verwaltung versprechen bessere Performance. Hunderte neue und überarbeitete Treiber verbessern die Hardware-Kompatibilität, während Ext4 bald reif für den produktiven Einsatz sein soll.
- Thorsten Leemhuis
Mit der Veröffentlichung der neunten Vorabversion von Linux 2.6.28 kündigte Linus Torvalds zu Beginn des letzten Dezemberdrittels an, die nächste aus der Hauptentwicklungslinie von Linux hervorgehende Linux-Version rund um die Weihnachtsfeiertage freigeben zu wollen. Da größere Änderungen in den letzten Tagen der Entwicklungsphase sehr selten sind, nutzt diese Artikel die Chance und liefert bereits jetzt einen Überblick über die wichtigen Neuerungen von 2.6.28.
Die gibt es wieder zu Hauf – so schließen die Kernel-Hacker mit Linux 2.6.28 die Hauptentwicklungsphase des Ext4-Dateisystems ab und entfernen die Sicherheitsmaßnahmen und Warnungen, die klar stellen sollten, dass der Ext3-Nachfolger bislang nur für Entwickler und experimentierfreudige Tester gedacht war. Zahlreiche Umbauarbeiten am Code für die Speicher-, Datenträger- und GPU-Verwaltung sollen ferner kleinere oder größere Geschwindigkeitszuwächse bringen, während Verbesserungen in verschiedenen Kernel-Bereichen die Akku-Laufzeit von Notebooks ein wenig verlängern sollen. Hinzu gesellen sich wie mit jeder neuen Linux-Version der Hauptentwicklungslinie hunderte neue oder signifikant überarbeitete Treiber – neu sind etwa die Treiber für das in vielen Eee PCs von Asus verbaute Touchpad von Elantech und den L2-Netzwerkchip von Atheros. Die Sound-Treiber haben die Kernel-Hacker auf den Stand von Alsa 1.0.18 aktualisiert. Zudem nahmen die Entwickler mehrere Treiber mit bekannten Schwächen in der Hoffnung auf, dass die Kernel-Community sich aufrafft und die Treiber gemeinsam verbessert, um sie später als reguläre Treiber mitzuliefern.
Diese und viele andere Änderungen haben den Gesamtumfang der Linux-Quellen in den vergangenen zehn Wochen auf über 10 Millionen Zeilen anwachsen lassen. Das detaillierte und mehrere Megabyte große Changelog listet alle Anpassungen seit der Version 2.6.27 im Detail auf. Das folgende Kernel-Log bietet einen kürzeren Überblick über die Neuerungen der jüngsten Kernel-Version – spätestens wenn das nächste Distributions-Update diese oder spätere Linux-Versionen mitliefert, profitieren davon auch Linux-Anwender, die keine eigenen Kernel kompilieren.
- Mistige Treiber
- Daten und Zahlen zu den jüngsten Versionen des Linux-Kernels
- Summa summarum 2.6.28 und was 2.6.29 bring
Die im Artikel erwähnten Neuerungen bei Infrastruktur und Treibern sind jene, die für einen Großteil der Linux-Anwender relevant sind. Eine Liste mit zahlreichen weiteren mehr oder weniger wichtigen Änderungen finden sich im Anhang:
Änderungen an der Infrastruktur
Änderungen an Treibern und der sie umgebenden Infrastruktur
Im Artikel finden sich zudem diverse Verweise auf das Glossar von heise online, das einige allgemeine und zeitlose Hintergrundinformationen zum Linux-Kernel und dessen Entwicklung bereithält:
- Linux-Kernel und -Treiber herunterladen und installieren
- Entwicklungszyklus des Linux-Kernels
- Die verschiedenen Kernel-Serien und -Entwicklungslinien
Ext4, Speicherverwaltung, Treiber
| Linux-Kernel herunterladen Neue Linux-Versionen sind über die in Amerika und Europa stationierten Server von Kernel.org erhältlich; deren Inhalte spiegeln auch zahlreiche deutsche Mirror. Linux-Anwender, die sich nicht intensiv mit dem Kernel und dessen Umfeld beschäftigen, sollten neue Linux-Treiber und -Kernel aber normalerweise nie auf eigene Faust einspielen, sondern auf die Vorarbeit der Linux-Distributoren zurückgreifen. (...mehr...) |
Hauptentwicklungsphase von Ext4 abgeschlossen
Gleich zu Beginn der 2.6.28-Entwicklung hatte Torvalds eine größere, von Dateisystem-Entwickler Theodore Ts'o (tytso) vorbereitete Patch-Sammlung integriert. Sie enthält neben Fehlerkorrekturen und Verbesserungen für den Ext3-Nachfolger einen Patch, durch den der Kernel das Ext4-Dateisystem fortan als ext4 und nicht mehr als ext4dev ("Ext4 for Developers") bezeichnet; ferner ist das Dateisystem nicht mehr als "Experimentell" gekennzeichnet. Diese Anpassungen sollen verdeutlichen, dass sich die auf den Datenträgern verwendeten Dateisystemstrukturen von nun an nicht mehr in inkompatibler Weise ändern sollen – Nutzer brauchen daher in Zukunft auch nicht mehr wie bisher darauf achten, dass Kernel-Version, Ext4-Utilities (e2fsprogs) und Datenträgerformat exakt zusammenpassen. Der Ext3-Nachfolger verlässt mit den bei 2.6.28 aufgenommen Änderung somit seine "heiße" Entwicklungsphase, nachdem die Kernel-Entwickler eine frühe Ext4-Variante mit Linux 2.6.19 aufgenommen hatten, um es im Hauptentwicklungszweig gemeinsam weiterzuentwickeln und reifen zu lassen.
Abgeschlossen ist die Ext4-Entwicklung aber noch keineswegs; vielmehr dürften die Entwickler das Dateisystem genau wie zuvor bei Ext3 über die Zeit stetig weiterentwickeln und dabei nicht nur Fehlerkorrekturen vornehmen, sondern auch die eine oder andere neue Funktion nachrüsten. Von "Ext4 ist nun stabil" zu sprechen dürfte ebenfalls noch ein wenig verfrüht sein, denn den Ext4-Entwicklern sind durchaus noch einige Fehler bei Ext4 bekannt – ähnlich wie bei den Fehlern in modernen CPUs dürften sich diese bei normaler Benutzung allerdings nicht zeigen. Als wirklich "Stabil" wird man das Dateisystem vermutlich erst bezeichnen können, wenn eine der größeren Mainstream-Distributionen Ext4 als Standarddateisystem nutzt und es sich bei einer größeren Zahl von Anwendern in den unterschiedlichsten Konfigurationen und Hardware-Umgebungen bewährt – erst dann dürften auch die üblicherweise konservativ agierenden Enterprise-Distributionen damit beginnen, Ext4 offiziell zu unterstützen.
Nach den Vorstellungen einiger wichtiger Linux-Dateisystementwickler ist Ext4 aber ohnehin nur eine Übergangslösung auf dem Weg zum als "Next Generation Linux Filesystem" auserkorenen Btrfs. Das soll nach den Vorstellungen einiger Entwickler schon in den nächsten Monaten über Linux-Next in den offiziellen Linux-Kernel einziehen. Dort soll es dann weiterentwickelt werden und reifen, ähnlich, wie es in den vergangenen zwei Jahren bei Ext4 der Fall war.
Schneller besser weiter
Einige für 2.6.28 vorgenommene Änderungen an den überaus wichtigen, aber meist eher im verborgenen arbeitenden Kernel-Speicherverwaltung sollen einen Geschwindigkeitszuwachs liefern. So nahmen die Kernel-Entwickler nach jahrelanger Entwicklung zahlreiche maßgeblich von Rik van Riel unter der Bezeichnung "VM pageout scalability improvements" vorangetriebene Änderungen auf, die Teile des Speichersubsystems erheblich renovieren und dabei optimieren (u. a. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12). Das soll den Verwaltungs-Overhead insbesondere bei speicherlastigen Anwendungen reduzieren; Details und Hintergründe zu den Patches finden sich in einem LWN.net-Artikel. Diese Änderungen dürften auf Desktop-Systemen und kleineren Servern allenfalls für messbare, normalerweise aber nicht spürbare Geschwindigkeitszuwächse sorgen; gerade bei sehr großen Servern oder HPC-Systemen können diese Änderungen aber deutliche Vorteile zeigen. Das dürfte auch für die von Nick Piggin eingebrachte Patches gelten, die versprechen, die CPU-Belastung bei der Speicherverwaltung zu mindern und die Arbeit geschickter auf die verschiedenen CPU-Kerne von Multiprozessorsystemen zu verteilen (u.A. 1, 2, 3, 4, 5, 6) – auch hierzu liefert LWN.net Hintergrundinformationen.
Der bei 2.6.28 neue Graphics Execution Manager (GEM) für Intel-Grafikchips soll ferner den Grafiktreibern einige Arbeiten bei der Speicherverwaltung abnehmen und darüber hinaus den Zugriff auf die Recheneinheiten des Grafikchips koordinieren. Auch das soll die Performance verbessern, zudem aber auch das Design von Grafiktreibern erleichtern und dadurch Funktionen ermöglichen, die sich ohne GEM nur schwer hätten realisieren lassen. Intel-Entwickler hatten GEM erst vor einigen Monaten kurzfristig als Alternative zum ursprünglich für diese Aufgaben vorgesehenen Translation Table Maps Memory-Manager (TTM) von Tungsten Graphics gestartet (siehe auch GEM vs. TTM auf LWN.net).
Wichtige neue Treiber
Viele mit Linux 2.6.28 neu aufgenommene Treiber verbessern die Unterstützung von modernen PC-Komponenten spürbar. Erstmals dabei ist etwa spezieller Treiber für die in vielen Eee PCs von Asus verbauten Touchpads von Elantech, der zusammen mit aktuellen Versionen des Synaptics-Treibers erweiterte Touchpad-Gesten erlaubt (Dokumentation). Sehnlichst erwartet haben dürften einige Anwender auch schon den Treiber atl2 für den Netzwerkchip Atheros L2, den insbesondere Asus seit einigen Monaten auf mehreren, zumeist eher preiswerteren Mainboards mit 100-MBit-LAN verbaut.
Bisher noch nicht weit verbreitet, langfristig aber von Wichtigkeit dürfte die bei 2.6.28 neue und maßgeblich von Intel-Entwicklern programmierte Unterstützung für Ultra-Breitband-Technologie (UWB/Ultra Wide Band) und das diese nutzende Wireless USB sein. Anders als bei den fünf vorangegangenen Kernel-Versionen stießen diesmal keine neuen Treiber für verbreitete WLAN-Chips zum Kernel hinzu. Der ath5k-Treiber für Atheros-WLAN-Chips bietet nun allerdings Unterstützung für Mesh-Netzwerke und den Atheros-Chip AR2417 v2; der rt2x00-Treiber nutzt nun die Verschlüsselungstechniken, die verschiedenere RaLink-WLAN-Chips bieten (1, 2, 3, 4).
Die mit 2.6.28 neue generische Wireless Regulatory Infrastructure soll in Zukunft flexibler und besser sicherstellen, dass man mit der WLAN-Hardware nicht gegen die am jeweiligen Aufenthaltsort geltenden Vorschriften zum Betrieb von Funkverbindungen verstößt. Dazu greift die neue Infrastruktur auf die Hilfe eines im Userspace laufenden Programms zurück, das die Informationen zu den verschiedenen Vorschriften und Gesetzen enthält. Das soll den Linux-Distributoren die Arbeit erleichtern, denn ein Userspace-Programm lässt sich viel einfacher und schneller aktualisieren als der bisher für diese Zwecke genutzte Kernel-Code. Die genaue Funktionsweise und zahlreiche weitere Hintergründe zur Wireless Regulatory Infrastructure liefern der Commit-Kommentar, die Kernel-Dokumentation, ein Artikel auf LWN.net und die Beschreibung das Userspace-Programms Central Regulatory Domain Agent.
Notebooks und SSDs
| Entwicklungslinien des Linux-Kernels Die Kernel-Hacker entwickeln den Linux-Kernel im Rahmen der 2.6-Serie stetig weiter. Dabei scheuen sie auch nicht vor umfangreichen Änderungen zurück. Es wird daher auf absehbare Zeit keinen 2.7-Entwicklerzweig geben, aus dem irgendwann eine Linux-Version 2.8.0 oder 3.0.0 hervorgeht, wie Linux 2.6.0 aus dem 2.5-Entwicklerzweig entstand; stattdessen pflegen die Entwickler mehrere Kernel-Serien für verschiedene Anwenderkreise parallel. Die Hauptentwicklungslinie stellen die Versionen mit drei durch Punkte getrennten Nummern (2.6.x, also etwa 2.6.26) dar. [...] Parallel zur Hauptentwicklung pflegen die Verwalter der Stable-Kernel-Serie die beiden jeweils neusten Versionen der Hauptentwicklungslinie weiter und kennzeichnen die Überarbeitungen durch eine zusätzliche Zahl (2.6.x.y, beispielsweise 2.6.24.10 oder 2.6.25.8). (...mehr...) |
Lange und sicher mit Linux unterwegs
Durch die neuen Range-Hrtimers kann der Kernel beim Anlegen einer später auszuführenden Aufgabe nun statt eines festen Ausführungszeitpunks ein Zeitfenster als Erledigungstermin festlegen. Dadurch kann der Kernel Aufgaben, die problemlos einige Sekundenbruchteile früher oder später ausgeführt werden können, bündeln und in einem Rutsch ausführen (siehe auch LWN.net-Artikel). Das verlängert sich im Idealfall nicht nur die Zeit deutlich, die die CPU in stromsparenden Schlafzuständen verbleibt, sondern erlaubt auch den Wechsel in tiefere und sparsamere CPU-Schlafmodi.
Einige von den Range-Hrtimers unabhängige Änderungen am CPUFreq-Framework (etwa 1, 2) sollen die Leistungsaufnahme bei unbelasteter CPU weiter reduzieren. Neu sind ferner einige umfangreiche Verbesserungen für den Vblank-Mechanismus der Direct Rendering Infrastructure (DRI). Durch sie sollen im 3D-Modus arbeitenden AMD- und Intel-Grafikchips nur noch Interrupts auslösen, wenn ein Programm auch tatsächlich auf ein Vblank-Event wartet, um störendes Flackern bei der 3D-Darstellung zu vermeiden. All das soll die Akku-Laufzeiten von Linux-Notebooks verlängern.
Falls die in manchen Notebooks verbauten Beschleunigungssensoren eine drohenden Erschütterungen erwarten lassen, kann eine (möglichst mit hoher Priorität laufende) Userspace-Anwendung über die neue "Disk Shock Protection" nun Festplatten anweisen, ihre Schreib/Leseköpfe schnellstmöglich zu parken, um die Gefahr von Festplattenschäden zu verringern (Dokumentation, Libata- und IDE-Unterstützung). IBM hat eine solche "Active Protection System (APS)" genannte Technik bereits vor Jahren bei mit Windows laufenden Thinkpad-Notebooks eingeführt; mit einigen Thinkpad-spezifischen Treibern sowie Vorläufern des jetzt aufgenommenen Codes ließ sich aber auch schon mit älteren Kernel ein vergleichbarer Schutz realisieren. Auch HP hat mit "HP Mobile Data Protection System 3D" und "HP 3D driveguard" schon eine ähnliche Technik impementiert – für einige der dabei genutzten Beschleunigungssensoren kam mit 2.6.28 ein passender Treiber hinzu.
Nachdem Intel Anfang Oktober die ACPI Integrated Graphics Device OpRegion Specification unter einer Creative-Commons-Attribution-Lizenz veröffentlicht hat, stieß nun Unterstützung für eben diese Technik zum Kernel hinzu. Das ermöglicht bei neueren Notebooks mit Intel-Grafikchipsatz die Einstellung der Display-Helligkeit über eben diese ACPI-Methode, was die Entwickler erfolgreich auf einem Thinkpad T61 und einem HP 2510p getestet haben; auch das Abfangen und Weiterleiten von Events beim Betätigen der Funktionstasten zum Umschalten des Displays-Ausgangs soll der neue Code verbessern. Durch eine weitere Änderung nutzt der Kernel zur Einstellung der Hintergrundbeleuchtung von Notebook-Displays in Zukunft nun bevorzugt ACPI. Die Treiber für Net- und Notebooks von Asus (1, 2,), Compal, Fujitsu, MSI, Sony und IBM/Lenovo kümmern sich hingegen nur noch um die Helligkeitsregelung, wenn es per ACPI nicht funktioniert; bisher kamen sich diese zwei Verfahren gelegentlich ins Gehege. Zu den genannten und zumeist Hersteller-spezifischen Notebook-Treibern gesellt sich mit panasonic-laptop ein weiterer. Er ermöglicht bei Notebooks aus der Panasonic-Serie Let's Note die Einstellung der Display-Helligkeit und macht einige zuvor brachliegende Funktionstasten nutzbar.
Daten sicher und schnell mit und ohne SSD
Das Libata-Subsystem kann dem übergeordneten Block-Layer nun mitteilen, ob es sich bei einem Datenträger um eine SSD (Solid-state drive) handelt. Die zum Block Layer gehörenden IO-Scheduler CFQ oder AS sind anhand dieser Informationen in der Lage, den Datenfluss besser zu steuern – statt wie sonst üblich einige Sekundenbruchteile auf weitere Daten zu warten, um den Einfluss der Zugriffszeiten zum Positionieren der Schreib-/Leseköpfe zu minimieren, können die IO-Scheduler bei SSDs so gleich die nächste Aufgabe angehen und so den Gesamtdurchsatz durch Eliminierung der sonst Vorteile bringenden Wartepausen steigern. Über die neue Discard-Funktion (LWN.net-Artikel) sind Dateisysteme nun zudem in der Lage, dem Block-Layer mitzuteilen, wenn bestimmte Bereiche (Blöcke) des Datenträgers nicht mehr in Benutzung sind – auch das ist für SSDs wichtig, damit etwa deren Wear-Leveling-Einheit weiß, welche Blöcke nicht mehr belegt sind.
Die IO CPU Affinity soll auf Mehrkern- oder Multiprozessor-Systemen den Datendurchsatz steigern und die CPU-Belastung reduzieren. Dazu versucht der Block-Layer, die Daten mit dem Prozessor weiterzuverarbeiten, mit dem zuvor die Datenanforderung erfolgt ist, da die Daten bei der CPU vielfach noch im Cache sind. Zudem unterstützt der Block-Layer nun Größenänderungen von Block-Devices zur Laufzeit und bietet Xen-Gästen über den Treiber blkfront Zugriff auf mehr als 16 virtuelle Datenträger. Ein ganzer Schwung kleiner Block-Layer-Patches von Libata-Entwickler Tejun Heo räumt zudem die Beschränkung auf maximal 15 Festplattenpartition bei über Libata-Treibern angesteuerten Datenträgern aus.
Audio und Video, Kernel-Infrastruktur
| Über das Git-Web-Frontend auf Kernel.org lassen sich auch Informationen zu Änderungen an einzelnen Dateien des Linux-Kernels aufrufen – so lässt sich beispielsweise herausfinden, ob es Neuerungen an den auf dem eigenen System eingesetzten Treibern gab. Dazu muss man allerdings wissen, wo sich die Treiberdateien im Quellcodebaum des Linux-Kernels finden. Bei den zumeist stark auf Modulen setzenden Kerneln der Distributionen helfen häufig die Ausgaben des Programms modinfo bei der Suche: [VERBATIM0] Liegt ein kompiliertes Modul etwa in [...]/kernel/drivers/net/e100.ko, dann findet sich dessen Sourcecode im Linux-Quellcodearchiv normalerweise im Verzeichnis drivers/net/ in Dateien mit ähnlichem Namen – etwa e100.c im Falle des für Intel-100-MBit-Netzwerkhardware zuständigen Treibers e100. Andere Module wie der für Intels PCI-Gigabit-LAN-Chips zuständige Treiber e1000 haben hingegen ein Verzeichnis für sich allein. Kennt man die ungefähre Position des Treiber-Quellcodes, navigiert man im Git-Webinterface über die Tree-Ansicht zu den jeweiligen Quellcode-Dateien und ruft über den Link history eine Übersicht über die jüngsten Änderungen an den zugehörigen Dateien oder dem ganzen Verzeichnis auf. Im Verzeichnis für die Netzwerktreiber lassen sich so beispielsweise die Änderungen am Treibercode von e100 (drivers/net/e100.c) und e1000 (drivers/net/e1000/) anzeigen und näher unter die Lupe nehmen. |
Audio- und Videosystem
Die Audio-Treiber von Linux 2.6.28 entsprechen in ungefähr dem Stand der Alsa-Treiber-Version 1.0.18, bringen aber bereits einige zusätzliche, meist allerdings eher kleinere Verbesserungen und Korrekturen mit. Zu den über die neue Alsa-Version eingeflossenen Neuerungen zählt eine Userspace-Schnittstelle, über die Anwendungen erkennen können, an welchen Audio-Buchsen Ein- oder Ausgabegeräte angeschlossen sind (Jack Sensing). Ebenfalls neu ist der Treiber snd-usb-us122l für das Tascam US-122L USB Audio/MIDI Interface. Der Treiber snd-virtuoso versteht sich nun mit der Xonar HDAV1.3 und der Xonar HDAV1.3 Deluxe von Asus.
Zahlreiche Änderungen bringen oder verbessern die Unterstützung für die AC97- und HD-Audio-Codecs verschiedener Hersteller – neu ist etwa der Support für die Codecs AD1882A und AD1980 von Analog Devices, ALC662 und 663 von Realtek oder VT1708S und VT1702 von VIA. Wie mit praktisch jeder neuen Kernel-Version erweiterten die Entwickler zudem die Whitelists für die automatische Anwendung Hardware-spezifischer Workarounds, sodass die Treiber die bei so manchen PCs, Notebooks und Mainboards nötigen und manuell über Modulparameter aktivierten Sonderbehandlungen für die Audio-Codecs auf mehr Hardware als zuvor automatisch aktivieren – ab 2.6.28 beispielsweise beim Dell Studio 15, dem HP Compaq 6730s oder dem Medion MD96630. Entfernt haben die Kernel-Entwickler hingegen den OSS-Treiber hal2. Die OSS-Emulation im Alsa-Modul soundcore ist nun optional, was alternative Implementierungen ermöglicht – damit ist der noch experimentelle OSS Proxy gemeint, der auf das ebenfalls experimentelle CUSE (Character devices in user space) aufsetzt (siehe auch LWN.net-Artikel).
Alleine mehr als 500 der in den vergangenen Wochen für 2.6.28 vorgenommenen Commits verändern den Code im Video-4-Linux-/DVB-Subsystem und bringen dabei zahlreiche Verbesserungen mit (1, 2, 3, 4, 5) – darunter eine große Überarbeitung des Gspca-Treibers t613 und ein neuer Treiber für die Terratec Cinergy T2, der den bisherigen ersetzt. Neu ist zudem ein Gspca-Treiber für den Webcam-Chip M5602 von ALi.
Verbesserungen unter der Haube
Wie schon bei Linux 2.6.27 haben die Entwickler erneut zahlreiche Aufrufe des im Multiprozessor-Betrieb für die Sicherung kritischer Codebereiche genutzten Big Kernel Lock (BKL) eliminiert oder von den Treiber-Subsystemen in die Treiber selbst verlagert. Weiter vorangetrieben haben die Kernel-Hacker zudem die mit Linux 2.6.24 begonnene Zusammenlegung der Verzeichnisse und Quellcodedateien zur Unterstützung von x86-32- und x86-64-Systemen. Bei diesem fortwährenden Prozess traf es diesmal unter anderem zahlreiche Code-Bereiche rund um das IRQ-Management; dadurch sollte sich das Verhalten von 32- und 64-Bit-x86-Kernel weiter annähern, die bei der IRQ-Konfiguration bislang gelegentlich recht unterschiedlich vorgehen.
Optimiert und um den PRIO based multiqueue packet scheduler erweitert haben die Netzwerk-Entwickler die mit 2.6.27 eingeführte Linux TX Multiqueue Implementation (kurz "multiqueue networking"). Erstmals dabei ist der von Nokia-Entwicklern eingebrachte Phonet Stack (Dokumentation) und die von Herbert Xu entwickelte Unterstützung für Transparent Ethernet Bridging over GRE tunnels. Jan Engelhardt brachte zudem zahlreiche sehr umfangreiche Renovierungsarbeiten am Netfiltercode ein, durch die unter anderem die Ebtables-Unterstützung jetzt auf Xtables aufbaut. Die Netfilter-Infrastruktur unterstützt nach fünf Jahren nun wieder "vernünftig" den Betrieb als transparenter Proxy (aus dem Merge request: "Proper transparent proxy support in netfilter. We sort of lost this feature 5 or so years ago, but hey better late than never to get it back :-)").
Das Initialisieren der Hardware und so den Boot-Vorgang beschleunigen sollen einige von Intel-Entwickler Arjan van de Ven eingebrachte Änderungen (u.A. 1, 2, 3, 4). Diese und einige weitere, von Torvalds allerdings zurückgewiesene Änderungen hatte van de Ven bei dem auf der Linux Plumbers Conference gezeigten Netbook eingesetzt, dass nur fünf Sekunden zum Start von Linux benötigte. Bei den meisten Systemen dürfte Linux 2.6.28 aber trotz der integrierten Fastboot-Patches allerdings nur unwesentlich schneller starten, da gängigen Mainstream-Distribution die meiste Zeit mit dem Initialisieren von Userspace-Diensten sowie dem Laden von Anmelde-Manager und Desktop-Umgebung vertrödeln. Wer dennoch die für die Kernel-Initialisierung benötigte Zeit zu Optimierungszwecken näher analysieren will, kann dabei nun auf neue, speziell für diesem Zweck eingerichtete Tracing-Infrastruktur zurückgreifen.
Virtualisierung, mehr Treiber
| Treibereien In der Unmenge der für Linux 2.6.28 vorgenommenen Änderungen finden sich eine Unmenge an Patches, die die zahlreichen in den Linux-Quellen enthaltenen Treiber verändern. Diese Patches verbessern die Hardware-Unterstützung, erweitern den Funktionsumfang oder korrigieren schlichtweg Fehler. Die in den nebenstehenden Absätze auf dieser und den vorangegangenen Seiten erwähnten Treiberneuerungen sind nur die allerwichtigsten; viele weitere solcher Änderungen finden sich am Ende des Artikels in zwei thematisch grob sortierten Listen mit Kurzbeschreibungen der jeweiligen Änderung (1, 2). Diese verlinken zum jeweiligen Commit im Webinterface des Verwaltungssystems für den Linux-Quellcode, wo sich in der Regel weitere Informationen zu den Hintergründen der jeweiligen Änderung sowie der Patch selbst findet. |
Architektur-Code und Virtualisierung
Nachdem bereits bei Linux 2.6.27 die Include-Dateien für ARM, IA64, Power und Sparc von include/xyz nach arch/xyz/include wanderten, folgen nun die Dateien für einige weitere Architekturen – darunter MIPS und x86. Die Kernel-Entwickler überholten ferner die APIC-Unterstützung für x86-Systeme an verschiedenen Stellen und erweiterten sie dabei gleich um Unterstützung für x2apic (u. a. 1, 2, 3, 4). Neu dabei ist auch die Unterstützung für die von neueren Intel-Prozessoren verstandenen Befehle XSAVE und XRSTOR, die den Zustand von x87- und SSE-Registern beim Context-Switch sichern oder wiederherstellen.
Der Microcode Loader, über den sich bislang nur der Microcode von Intel-CPUs aktualisieren ließ, unterstützt nach einem maßgeblich von AMD-Entwicklern vorangetriebenen Redesign nun auch neuere AMD-Prozessoren (u. a. 1, 2, 3). Zum Performance- oder Code-Debugging gibt es ferner einige grundlegende Neuerungen – darunter die Kernel Tracepoints (Dokumentation, Beispiele) und der Unified Trace Buffer. Entfernt haben die Kernel-Entwickler irqbalance – bei den meisten Distributionen kümmert sich bereits seit Jahren der gleichnamige Userspace-Daemon um diese Aufgabe.
Auch für Virtualisierungslösungen bringt 2.6.28 wieder einiges Neues. Mit der Virtualisierungslösung KVM lassen sich nun etwa mit Hilfe von Intels VT-D PCI-Geräte an Gäste durchreichen (u. a. 1, 2, 3); zudem gab es eine Optimierung, die den Startprozess von als KVM-Gast laufenden Betriebssystemen um rund 15 Prozent beschleunigen soll. Für Visualisierung mit Containern bietet der Kernel nun einen Container Freezer, mit dem sich ein Container komplett einfrieren lässt (Dokumentation, LWN.net-Artikel) – etwa um einen Cluster-Job mit niedriger Priorität vorübergehend komplett anzuhalten. Der Kernel-Code zum Betrieb als Xen-Gastsystem (DomU) ermöglicht nun auch CPU-Hotplugging; neu aufgenommen wurde ferner Xen-DomU- und IOMMU-Unterstützung für Intels Itanium (IA64). Der Xen-Code zum Aufsetzen einer federführenden Xen-Domäne (Dom0) hat die Aufnahme in 2.6.28 wie erwartet nicht geschafft.
Noch mehr Treiber
Die bislang erwähnten Neuerungen waren allerdings nur die wichtigsten. Neu dabei sind etwa auch zahlreiche Treiber für das insbesondere bei Embedded-Systemen eingesetzten Framework ASoC (ALSA System on Chip) – darunter Treiber für die Codecs WM8903, WM8580, WM8900 und WM8971 von Wolfson Microelectronics. Neben dem vor einigen Monaten zu Red Hat gewechselten Jaroslav Kysela ist nun auch der bei Suse beschäftigte Alsa-Entwickler Takashi Iwai offiziell als Verwalter der Audio-Treiber in den Kernel-Quellen gelistet.
Bereits bei der Konfiguration lässt sich nun festlegen, welche Gspca-Treiber tatsächlich übersetzen werden sollen. Neu ist die Unterstützung für die DVB-S2-Chips cx24116, si21xx und stv0288; die Treiber cx88 und dw2102 wurden parallel um DVB-S2-Unterstützung erweitert.
Im Netzwerk-Bereich sind die Treiber enic (10 GBit-NICs von Cisco), jme (Gigabit-NICs von JMicron), qlge (10GBit-NICs von Qlogic) und smsc95xx (USB 2.0 10/100 MBit-Adapter mit SMSC LAN9500) hinzugekommen. Erstmals enthalten sind zudem der Treiber fsl_qe_udc für den QE/CPM USB Device Controller von Freescale und ein USB test and measurement class driver für Geräte, die der USB.org-Spezifikation für "USB Test and Measurement devices" entsprechen.
Der Treiber für Toshiba-Notebooks beherrscht nun die Kontrolle zum Ein- und Ausschalten von Bluetooth und nutzt dazu das rfkill-Framework. Der Framebuffer-Treiber für Intel-Grafikchipsätze kennt jetzt den im Eee 901 verbauten 945GME.
Viele weitere weniger wichtige, aber keineswegs bedeutungslose Änderungen finden sich auf der letzten Seite dieses Artikels – im V4L/DVB-Abschnitte finden sich etwa die Nahmen von zahlreichen DVB-Karten und -Adaptern, mit denen der Linux-Kernel in der Version 2.6.28 umgehen kann.
"Mistige" Treiber
Wie im September auf dem Kernel-Summit beschlossen, haben die Kernel-Hacker den Entwicklungszweig "Linux-Staging" in den Hauptentwicklungszweig aufgenommen (1, 2). Ursprünglich hatte Greg Kroah-Hartman Linux-Staging vor einigen Monaten gestartet, um dort unabhängig vom offiziellen Linux-Kernel gewartete Open-Source-Treiber zusammenzutragen, die den Qualitätsansprüchen der Kernel-Entwickler nicht genügen; damit wollte man anderen Entwicklern eine zentrale Plattform bieten, um die Treiber dort für eine Aufnahme in den offiziellen Linux-Kernel aufzubereiten.
Die Verbesserung solcher Treiber mit teils schwerwiegenden Problemen im Code oder im Design wollen die Kernel-Entwickler aber nun innerhalb des Hauptentwicklungszweigs vorantreiben; alle Kernel-Hacker hätten den Code dort direkt vor Augen und könnten Verbesserungen über die üblichen, ihnen bekannten Wege beisteuern. Um die reifen von den unreifen Treibern klar zu trennen, landete der bisher in Linux-Staging zusammengetragene Code im neuen Verzeichnis driver/staging/. Damit aber auch den Anwendern klar wird, dass diese Treiber größere Probleme haben können, muss man Staging-Code explizit während der Kernel-Konfiguration aktivieren; beim Laden eines Staging-Treibers wird der Kernel zudem als "TAINT_CRAP" markiert, damit bei Fehlerberichten klar ersichtlich ist, dass ein "mistiger" Treiber geladen war und möglicherweise für Probleme jeglicher art (mit)verantwortlich ist (1, 2).
In dem Dutzend in den Hauptentwicklungszweig aufgenommenen Staging-Treibern sind einige recht bekannte, die einige Linux-Distributionen schon seit Jahren ausliefern – etwa der vom WLAN-NG-Projekt entwickelte Treiber prism2_usb für Intersil-USB-Chips oder der Treiber at76_usb für WLAN-Chips von Atmel. Es wird sich zeigen müssen, ob sich durch die Aufnahme in den Staging-Bereich des offiziellen Kernels nun mehr Kernel-Hacker als zuvor berufen fühlen, die Treiber zu verbessern – gerade bei dem alten und komplexen WLAN-NG-Treiber könnte das Schreiben eines von Grund auf neuen Treibers möglicherweise die bessere Herangehensweise sein, sofern jemand überhaupt noch so viel Arbeit für so alte Hardware investieren will.
Statistik, Fazit, Ausblick auf 2.6.29
Daten und Zahlen zu den jüngsten Versionen des Linux-Kernels
Summa summarum 2.6.28 und was 2.6.29 bringt
Linux 2.6.28 bringt zahlreiche Neuerungen, von denen so mancher Linux-Anwender über kurz oder lang profitieren wird. Wenn man aber nicht gerade einen der neuen Treiber braucht, wird es zumeist wohl eher auf "lang" hinauslaufen: Ext4 etwa dürfte erst an wirklich an Bedeutung gewinnen, wenn eine Mainstream-Distribution es als Standard-Dateisystem einsetzt – das wird frühestens in einigen Monaten der Fall sein. Auch die Wireless-USB-Unterstützung ist derzeit noch nicht so wichtig, weil entsprechende Hardware noch rar ist; und bis gängige Desktop-Systeme und durchschnittliche Server von den Performance-Verbesserungen im Speichersubsystem profitieren, vergeht vermutlich auch noch eine Weile. Für einige Herausforderungen der Zukunft haben die Kernel-Hacker aber schon jetzt vorgesorgt.
| Entwicklungszyklus des Linux-Kernels [...] Durch den öffentlichen Entwicklungsprozess und einen tiefen Blick in den Kaffeesatz ist heise open und der von der Linux-Foundation gewartete Radarschirm des Linux Weather Forecast bereits bei der Vorstellung einer neuen Kernel-Version dazu in der Lage, einige Neuerungen zu benennen, die die darauf-folgende Version mitbringen dürften. [...] (...mehr...) |
Direkt nach der Freigabe von 2.6.28 beginnt die erste, üblicherweise zwei Wochen lange und Merge Window genannte Phase im Entwicklungszyklus des Linux-Kernels, in der Torvalds die umfangreicheren Änderungen für die darauffolgende Kernel-Version in den Hauptentwicklungszweig aufnimmt. Im Grafikbereich planen die Intel-Entwickler nach GEM die Aufnahme der Unterstützung für Kernel-Based Mode-Setting (KMS). Ferner planen offenbar auch die Entwickler des Echtzeitzweiges, einige der Echtzeiterweiterungen für Linux in den Hauptentwicklungszweig zu überführen. Dass es allerdings der Code zum Aufsetzen eines Xen-Hosts (Dom0) in 2.6.29 schafft, scheint derzeit eher unwahrscheinlich – ganz ausschließen kann man es aber auch nicht.
Wie üblich wird das Kernel-Log in der c't und auf heise open in den kommenden Wochen über die wichtigsten in die Hauptentwicklungslinie von Linux integrierten Neuerungen und andere Entwicklungen im Umfeld des Linux-Kernels berichten. Dazu zählen auch neue Versionen der Stable-Kernel-Series (2.6.x.y), die in den nächsten Wochen den ein oder anderen Fehler korrigieren dürften, den die Kernel-Hacker und Tester bei der Entwicklung von 2.6.28 übersehen haben. Zur CeBit Anfang März oder kurz danach dürfte Torvalds dann die Linux-Version 2.6.29 freigeben. Deren Änderungen wird dann wie üblich ein längeres Kernel-Log wie dieses auf heise open detailliert beschreiben. (thl/c't)
Anhang:
Änderungen an der Infrastruktur
Änderungen an Treibern und der sie umgebenden Infrastruktur
Weiter: Anhang, weitere Änderungen an der Infrastruktur
Höher und weiter – Die Neuerungen von Linux 2.6.28
Anhang: Noch mehr Änderungen an Infrastruktur
Die im voranstehenden Artikel erwähnten Neuerungen der jüngsten Linux-Version stellen nur eine Auswahl der bedeutsamsten Änderungen dar – die sprichwörtliche Spitze des Eisbergs, der bei jeder neuen Linux-Version im Hauptentwicklungszweig aus Tausenden von Commits im Quellcodeverwaltungsystem besteht. Zahlreiche weitere ebenfalls wichtige Neuerungen – sozusagen die etwas unterhalb der Eisbergspitze – finden sich im Folgenden als thematisch grob sortierte Liste mit einer Kurzbeschreibung zur Änderung. Bei ihr handelt es sich zumeist um die (teilweise leicht angepassten) englischen Überschriften des Commits, die auf die jeweilige Änderung im Webfrontend des Quellcodeverwaltungssystems verlinkt sind; dort finden sich in der Regel detaillierte Informationen und Hintergründe zur Anpassung sowie der Patch selbst.
Basic kernel infrastructure
x86:
- add AMD IOMMU tree to MAINTAINERS file
- AMD IOMMU: implement lazy IO/TLB flushing
- edac x38: new MC driver module
- KVM: x86: accessors for guest registers
- oprofile: Add support for AMD Family 11h
- oprofile: Implement Intel architectural perfmon support
- x86: add PCI IDs for AMD Barcelona PCI devices
- x86: add PCI IDs for AMD Barcelona PCI devices
- x86: Add sysfs entries for UV v4
- x86: Add UV bios call infrastructure v4
- x86: Add UV EFI table entry v4
- x86: Add UV partition call v4
- x86: add X86_RESERVE_LOW_64K
- x86: AMD microcode patch loading support
- x86: AMD microcode patch loading support v2
- x86: apic - use SET_APIC_DEST_FIELD instead of hardcoded shift
- x86: blacklist DMAR on Intel G31/G33 chipsets
- x86, bootup: add built-in kernel command line for x86 (v2)
- x86: check for and defend against BIOS memory corruption
- x86: configuration options to compile out x86 CPU support code
- x86: consolidate header guards
- x86: doc: move x86-generic documentation from Doc/x86/i386
- x86: drop double underscores from header guards
- x86, gart: add detection of AMD family 0x11 northbridges
- x86, gart: fix gart detection for Fam11h CPUs
- x86: HPET: convert WARN_ON to WARN_ON_ONCE
- x86: HPET: enter hpet_interrupt_handler with interrupts disabled
- x86: HPET: read from HPET_Tn_CMP() not HPET_T0_CMP
- x86: improve UP kernel when CPU-hotplug and SMP is enabled
- x86: major refactoring
- x86: make io_apic_32.c the same as io_apic_64.c
- x86: make io_apic_64.c and io_apic_32.c the same
- x86: Make NUMA on 32-bit depend on BROKEN
- x86: moved Intel microcode patch loader declarations to seperate header file
- x86: PAT documentation updates with debug info
- x86, pci: add northbridge pci ids for fam 0x11 processors
- x86: PIC, L-APIC and I/O APIC debug information
- x86, ptrace: PEBS support
- x86: remove EXPERIMENTAL restriction from CONFIG_HOTPLUG_CPU
- x86: remove irqbalance in kernel for 32 bit
- x86: remove sparse irq from Kconfig
- x86, um: initial part of asm-um move
- x86: usb debug port early console, v4
- x86, xsave: update xsave header bits during ptrace fpregs set
- x86, xsave: xsave cpuid feature bits
Others:
- ARM: 5202/1: pxa: Added Mitac Mio A701 smartphone support.
- ARM: 5210/2: AFEB9260: board support
- ARM: 5238/2: Very basic Palm Zire 72 support
- ARM: OMAP2: Powerdomain: Add base OMAP2/3 powerdomain code
- ARM: OMAP3: Add minimal omap3430 support
- Basic support for the Arcom/Eurotech Viper SBC.
- Blackfin arch: Add new board support for ADZS-BF526-EZ-BRD
- Blackfin arch: add supporting for kgdb
- GPIO: add new Xilinx driver for powerpc
- MIPS: Add support for NXP PNX833x (STB222/5) into linux kernel
- MIPS: TXx9: Add RBTX4939 board support
- MIPS: TXx9: Add TX4939 SoC support
- MX2: Add DMA support for mx2 and (eventually) mx1
- NIU: Add Sun CP3260 ATCA blade support
- powerpc/86xx: Correct SOC bus-frequency in GE Fanuc SBC610 DTS
- powerpc: Fix Book-E watchdog timer interval setting
- powerpc: Fix msr check in compat_sys_swapcontext
- powerpc/fsl-booke: Fix synchronization bug w/local tlb invalidates
- powerpc: Repair device bindings documentation
- rename io_apic_64.c and io_apic_32.c to io_apic.c
- sparc: remove CONFIG_SUN4
- xtensa: Add config files for Diamond 232L - Rev B processor variant
- xtensa: Add support for the Sonic Ethernet device for the XT2000 board.
Filesystems, VFS, Block, DM, MD:
- autofs4: add miscellaneous device for ioctls
- autofs4: device node ioctl documentation
- block: add BIG FAT WARNING to CONFIG_DEBUG_BLOCK_EXT_DEVT
- Configure out AIO support
- CIFS: Add nodfs mount option
- deadline-iosched: allow non-sequential batching
- dm raid1: separate region_hash interface part1
- ext4: Fix file fragmentation during large file write.
- ext4: Improve the documentation for ext4's /proc tunables
- ext4: Remove old legacy block allocator
- ext4: Rename ext4dev to ext4
- ext4: Update Documentation/filesystems/ext4.txt
- GFS2: Fix metafs mounts
- GFS2: Support for I/O barriers
- md: allow extended partitions on md devices.
- md: destroy partitions and notify udev when md array is stopped.
- ocfs2: Add extended attribute support
- ocfs2: Enable xattr set in index btree
- ocfs2: POSIX file locks support
- ocfs2: Switch over to JBD2.
- vfs: vfs-level fiemap interface
- XFS: Account for allocated blocks when expanding directories
- XFS: Wait for all I/O on truncate to zero file size
- XFS: XFS: Check for valid transaction headers in recovery
- crypto: rng - RNG interface and implementation
- crypto: tcrypt - Add alg_test interface
- crypto: tcrypt - Avoid using contiguous pages
- KEYS: Make request key instantiate the per-user keyrings
- netlabel: Add functionality to set the security attributes of a packet
- netlabel: Add network address selectors to the NetLabel/LSM domain mapping
- SELinux: add boundary support and thread context assignment
- Add the development process document
- Add a reference to paper to SubmittingPatches
- Create/use more directory structure in the Documentation/ tree.
- Documentation/kernel-parameters.txt: add min_addr, fix max_addr
- PCI: document the pcie_aspm kernel parameter
- PCI: Document that most pci options are shared between i386 and x86-64
- CFS scheduler: documentation about scheduling policies
- sched: new documentation about CFS
- Document kernel taint flags properly
- compat: generic compat get/settimeofday
- cpumask: introduce new API, without changing anything
- cpumask: introduce new API, without changing anything, v3
- cpumask: new API, v2
- doc: unevictable LRU and mlocked pages documentation
- driver core: basic infrastructure for per-module dynamic debug messages
- dsa: fix master interface allmulti/promisc handling
- ftrace: add stack tracer
- ftrace: disable tracing on resize
- ftrace: remove daemon
- ftrace: rename FTRACE to FUNCTION_TRACER
- ftrace: update txt document
- genirq: revert dynarray
- mfd: Add WM8350 audio register definitions
- modules: fix module "notes" kobject leak
- mutex: speed up generic mutex implementations
- nohz: disable tick_nohz_kick_tick() for now
- printk: robustify printk
- printk: robustify printk, fix
- printk: robustify printk, fix #2
- printk: robustify printk, update comment
- profiling: dynamically enable readprofile at runtime
- reintroduce accept4
- ring_buffer: implement new locking
- sched: improve sched_clock() performance
- sched: release buddies on yield
- select: switch select() and poll() over to hrtimers
- ssb: Fix DMA-API compilation for non-PCI systems
- sysfs: crash debugging
- timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context
- tracing, sched: LTTng instrumentation - scheduler
- x86: more general identifier for Phoenix BIOS
Weiter: Anhang, weitere Änderungen an Treibern und der sie umgebenden Infrastruktur
Höher und weiter – Die Neuerungen von Linux 2.6.28
Drivers and their surrounding subsystems
Powermanagement, ACPI and PCI:
- x86/PCI: follow lspci device/vendor style
- ACPI: cpufreq, processor: Detect old BIOS, not supporting CPU freq on a recent CPU.
- CPUFREQ: powernow-k8: Try to detect old BIOS, not supporting CPU freq on a recent AMD CPUs.
- cpuidle: upon BIOS bug, default to default_idle rather than polling
- ACPI: Add "acpi.power_nocheck=1" to disable power state check in power transition
- ACPI: delete OSI(Linux) DMI dmesg spam
- ACPI: Load device driver according to the status of acpi device
- ACPI: thinkpad-acpi: fix fan sleep/resume path
- dock: add bay and battery hotplug support
- bay: remove driver, all functions now handled by dock driver
- dock: make dock driver not a module
- ACPI: update debug parameter documentation
- ACPI: remove CONFIG_ACPI_EC
- ACPI: remove CONFIG_ACPI_POWER
- ACPI: Change acpi_evaluate_integer to support 64-bit on 32-bit kernels
- ACPICA: New: Validation for predefined ACPI methods/objects
- PCI: allow quirks to be compiled out
- PCI: follow lspci device/vendor style
- PCI PM: Introduce function pci_wake_from_d3
- PCI: support PCIe ARI capability
- PCI: tidy PME support messages
- acer-wmi: Add rfkill support for wireless and bluetooth
- acer-wmi: Remove wireless and bluetooth sysfs entries
- asus-laptop: Add support for P30/P35
- backlight: add support for Sharp SL-6000 LCD and backlight drivers
- eeepc-laptop: Use standard interfaces
- piix: add Hercules EC-900 mini-notebook to ich_laptop short cable list
- Input: atkbd - expand Latitude's force release quirk to other Dells
- Input: psmouse - add OLPC touchpad driver
- efifb/imacfb consolidation + hardware support
- netdrvr usb/hso: Cleanup rfkill error handling
- powerpc: Update QE/CPM2 usb_ctlr structures for USB support
- rtl8187: Add Abocom USB ID
- USB: add Nikon D300 camera to unusual_devs
- USB: add ZTE MF626 USB GSM modem entry
- USB: Fix PS3 USB shutdown problems
- USB: fix SB600 USB subsystem hang bug
- USB: fix SB700 usb subsystem hang bug
- usb gadget: link fixes for network gadget
- USB: option: add Ericsson F3507g and Dell 5530
- USB: SISUSB2VGA driver: add 0x0711, 0x0903
- USB: storage: unusual_devs entry for Mio C520-GPS
- USB: storage: updates unusual_devs entry for the Nokia 6300
- USB: storage: update unusual_devs entries for Nokia 5300 and 5310
- USB: support Huawei data card product IDs
- USB: Unusual dev for the "Kyocera / Contax SL300R T*" digital camera.
- USB: unusual_devs entry for Argosy USB mass-storage interface
- usb: unusual devs patch for Nokia 7610 Supernova
- USB: usb-storage: unusual_devs entry for Nikon D2H
- uwb: add entries in the MAINTAINERS file
- uwb: add Intel i1480 HWA to the UWB RC quirk table
- uwb: add the driver to enumerate WHCI capabilities
- uwb: add the uwb include files
- uwb: add WiMedia LLC Protocol (build system)
- uwb: depend on EXPERIMENTAL
- wusb: add the Wireless USB core (build-system)
UWB/USB Wireless:
- UWB stack (MLME)
- UWB stack (reservation manager)
- UWB stack (radio controller interface)
- UWB stack (core files)
- Wireless USB core
- Wireless USB core (protocol)
- Wireless USB core (security)
- Wire Adapter (WA) core
- i1480 WLP driver
- i1480 DFU driver
- WiMedia LLC Protocol stack
- WiMedia LLC Protocol stack (WSS)
- WiMedia LLC Protocol stack (messages)
- WHCI host controller driver
- HWA host controller driver
- HWA radio controller driver
- wusb-cbaf driver
- whc-rc radio control driver
- UWB documentation
- Document UWB and WUSB sysfs files
Input Subsystem (keyboard, mice, joysticks, ....):
- HID: add quirk entry for no-name keyboard (0x13ba/0x0017)
- HID: add support for another Gyration remote control
- HID: Add support for Sony Vaio VGX-TP1E
- HID: Autocentering support for Logitech MOMO Racing Wheel
- HID: map macbook keys for "Expose" and "Dashboard"
- HID: report descriptor fix for remaining MacBook JIS keyboards
- Input: add driver for USB VoIP phones with CM109 chipset
- Input: ALPS - add signature for DualPoint found in Dell Latitude E6500
- Input: atkbd - expand Latitude's force release quirk to other Dells
- Input: document i8042.debug in kernel-parameters.txt
- Input: i8042 - add Dell XPS M1530 to nomux list
- Input: psmouse - add OLPC touchpad driver
- Input: wacom - add support for new USB Tablet PCs
- Input: wistron - add support for Fujitsu-Siemens Amilo Pro v3505
General:
- ata: Fix experimental tags
- block: unify request timeout handling
- block: add fault injection mechanism for faking request timeouts
- USB: storage: Avoid I/O errors when issuing SCSI ioctls to JMicron USB/ATA bridge
Libata (newer drivers for Parallel- and Serial-ATA controllers):
- ahci: Add support for Promise PDC42819
- libata: add whitelist for devices with known good pata-sata bridges
- libata: Avoid overflow in ata_tf_read_block() when tf->hba_lbal > 127
- libata: improve phantom device detection
- libata: pata_cs553*.c: cleanup kernel-doc
- libata: pata_pcmcia: another memory card support
- libata: pata_sch: notice attached slave devices
- libata: switch to using block layer tagging support
- pata_hpt366: no ATAPI DMA
- sata_sil24: configure max read request size to 4k
- sata_via: fix support for 5287
IDE (alternative/older drivers mainly for Parallel-ATA controllers):
- ide: add generic ATA/ATAPI disk driver
- ide: add proper PCI PM support (v2)
- ide: Add tx4939ide driver (v6)
- ide: /proc/ide/hd*/settings rework
- ide-generic: handle probing of legacy io-ports v5
- piix: add Hercules EC-900 mini-notebook to ich_laptop short cable list
SCSI:
- SCSI lpfc 8.2.8 : Add MSI-X support
- SCSI lpfc 8.2.8 : Miscellaneous Bug Fixes
- SCSI lpfc 8.2.8 : Update driver for new SLI-3 features
- SCSI lpfc 8.2.8 v2 : Add statistical reporting control and additional fc vendor events
- SCSI zfcp: attach and release SAN nameserver port on demand
- SCSI zfcp: remove unused references, declarations and flags
General:
- bonding: add more ethtool support
- IPVS: Add genetlink interface implementation
- net: Distributed Switch Architecture protocol support
LAN specific:
- bnx2: Update 5706/5708 firmware.
- cassini: use request_firmware
- cxgb3: Support for Aeluros 2005 PHY
- e1000e: add support for new 82574L part
- e1000e: add support for the 82567LM-4 device
- e1000e: add support for 82567LM-3 and 82567LF-3 (ICH10D) parts
- mv643xx_eth: transmit multiqueue support
- netxen: enable msi-x for quad-gig boards
- phy: Add support for Marvell 88E1118 PHY
- phylib: Add Vitesse VSC8221 SGMII PHY * r8169: add 8168/8101 registers description
- r8169: add hw start helpers for the 8168 and the 8101
- r8169: additional 8101 and 8102 support
- r8169: new phy init parameters for the 8168b
- r8169: add a new 8168c flavor
- r8169: add a new 8168c flavor (bis)
- r8169: add a new 8168cp flavor
- r8169: support additional 8168cp chipset
- r8169: preliminary 8168d support
- sfc: Export boot configuration in EEPROM through ethtool
- sis190: add identifier for Atheros AR8021 PHY
- smc911x: Add support for LAN921{5,7,8} chips from SMSC
WLAN specific:
- ath5k: Update registers and SREV ids v2
- ath5k: rates cleanup
- ath9k: Allow AP mode to be enabled
- ath9k: Add LED support
- ath9k: Add RF kill support
- b43: Add LP-PHY radio register definitions
- b43: Rewrite TX power adjustment
- cfg80211: fix static regdomains
- iwlwifi: Added support for 3 antennas
- iwlwifi: update 5350 Wifi PCI IDs
- mac80211: clean up rate control API
- mac80211: make BA session handling independent of STA mode
- mac80211: split off mesh handling entirely
- mac80211: use nl80211 interface types
- mac80211: share STA information with driver
- mac80211: add the 'minstrel' rate control algorithm
- orinoco: Invoke firmware download in main driver
- rtl8187 : support for Sitecom WL-168 0001 v4
- p54: better firmware support
- p54: control output power levels
- p54: 802.11a 5GHz phy support
- p54usb: support LM87 firmwares
- p54usb: Device ID updates
- rtl8187: add device ID 0bda:8198
- rtl8187: Add USB ID for Belkin F5D7050 with RTL8187B chip
- zd1211rw: Add 2 device IDs
- agp/amd-k7: Suspend support for AMD K7 GART driver
- drm/i915: Filter pci devices based on PCI_CLASS_DISPLAY_VGA
- drm/radeon: add support for RS740 IGP chipsets.
- drm/radeon: map registers at load time
- drm: Remove infrastructure for supporting i915's vblank swapping.
- efifb/imacfb consolidation + hardware support
- fbdev: add new TMIO framebuffer driver
- i915: Disable MSI on GM965 (errata says it doesn't work)
- i915: Save/restore MCHBAR_RENDER_STANDBY on GM965/GM45
- radeon: add RS400 family support.
- radeonfb: accelerate imageblit and other improvements
- separate i915 suspend/resume functions into their own file
- viafb: MAINTAINERS entry
- viafb: Makefile, Kconfig
- viafb: viafbdev.c, viafbdev.h
- viafb: viafb.modes, viafb.txt
- viafb: via_i2c.c, via_i2c.h, viamode.c, viamode.h
- viafb: via_utility.c, via_utility.h, vt1636.c, vt1636.h
- ALSA: ac97 - vt1618 7.1 Audio Support
- ALSA: Add jack reporting API
- ALSA: ALS4000 driver work, step 2
- ALSA: ALSA-Configuration.txt: supported cards update
- ALSA: ASoC: Add all CODECs Kconfig option
- ALSA: ASoC: Add mpc5200-psc I2S driver
- ALSA: ASoC: Add OpenFirmware helper for matching bus and codec drivers
- ALSA: ASoC: Add SPI support for WM8731
- ALSA: ASoC: Add Texas Instruments TLV320AIC26 codec driver
- ALSA: ASoC: Add TLV320AIC23 codec driver
- ALSA: atiixp - Add PCI ID for SB600 (1002:4382)
- ALSA: Build jack detection
- ALSA: cs46xx: Add PCI IDs for TerraTec and Hercules cards
- ALSA: Fix commit: Add automatic model setting for the Acer Aspire 5920G laptop
- ALSA: hda: 92xx S/PDIF In support
- ALSA: hda - Add ALC1200 support
- ALSA: hda - Add ALC887 support
- ALSA: hda - Add a quirk for another Acer Aspire (1025:0090)
- ALSA: hda - Add another HP model for AD1884A
- ALSA: hda - Add definitions of HDMI-related verbs
- ALSA: hda - Add digital-mic for ALC269 auto-probe mode
- ALSA: hda: added 92HD81/83 support
- ALSA: hda: Add HDA vendor ID for Wolfson Microelectronics
- ALSA: hda - Add missing analog-mux mixer creation for STAC9200
- ALSA: hda - Add model for Toshiba L305 laptop
- ALSA: hda - Add PCI subsystem ID for MacBookPro4,1
- ALSA: hda - Add quirks for HP Pavilion DV models
- ALSA: hda - Add reboot notifier
- ALSA: hda: Add STAC_DELL_M4_3 quirk
- ALSA: hda: Add support for ECS/PC Chips boards with Sigmatel codecs
- ALSA: hda - Add support of Acer Aspire One
- ALSA: hda - Add support of ALC272
- ALSA: hda - Add support of HP DC7600
- ALSA: hda - Add support of Quanta FL1
- ALSA: hda - Add support of Toshiba RX1
- ALSA: hda - Add support of Toshiba S06
- ALSA: hda: appletv support
- ALSA: hda - Check model for Dell 92HD73xx laptops
- ALSA: hda: digital pc-beep support hd-audio codecs
- ALSA: hda - Fix conflicting volume controls on ALC260
- ALSA: hda - Fix IDT/STAC multiple HP detection
- ALSA: hda - Fix PCI SSID of ASUS M90V
- ALSA: hda - Fix PCM type of Nvidia HDMI devices
- ALSA: hda - Fix quirk lists for realtek codecs
- ALSA: hda - Fix sound on NEC Versa S9100
- ALSA: hda - Fix SPDIF mute on IDT/STAC codecs
- ALSA: hda: HP laptop quirk
- ALSA: hda - Make the HP EliteBook 8530p use AD1884A model laptop
- ALSA: hda - Map ALC662 model for Foxconn 45CMX/45GMX/45CMX-K
- ALSA: hda - Map ALC662 model for Gigabyte 945GCM-S2L
- ALSA: hda - mark Dell studio 1535 quirk
- ALSA: hda - No 'Headphone as Line-out' swich without line-outs
- ALSA: HDA patch_via.c: Fix inversion of surround and side channels
- ALSA: HDA patch_via.c: Second S/PDIF (HDMI) support
- ALSA: hda - print a few HDMI information in proc
- ALSA: hda - put all HDA codec IDs to components for precise hw detection
- ALSA: hda - Restore default pin configs for realtek codecs
- ALSA: hda - set up HDMI channels
- ALSA: hda: STAC_DELL_M6 EAPD
- ALSA: hda - support more ALC888 devices
- ALSA: ice1724: enable MIDI on Terratec Aureon 7.1 Universe
- ALSA: ice1724 - Support for Terrasoniq/MUSONIK TS22 PCI card
- ALSA: intel8x0 - add Dell Optiplex GX620 (AD1981B) to AC97 clock whitelist
- ALSA: intel8x0 - Add quirk for Fujitsu Lifebook P7010
- ALSA: ps3: Add support for SPDIF/HDMI passthru
- ALSA: snd-ad1816a: add different TerraTec EWS64 S model
- ALSA: snd-cs4236: add Techmakers MF-4236PW PnP card ID
- ALSA: sound/pci: supported cards update
- ALSA: Support NVIDIA MCP78/7A HDMI audio
- ALSA: usb-audio: add BOSS GT-10 support
- ASoC: Blackfin: board driver for AD1980/1 audio codec
- ASoC: Blackfin: board driver for SSM2602 sound chip
- ASoC: Blackfin: DMA Driver for AC97 sound chip
- ASoC: Blackfin: SPORT peripheral interface driver
- ASoC codec: SSM2602 audio codec driver
- ps3: Add passthru support for non-audio streams
- Add ADS Tech Instant HDTV PCI support
- Add DVB support for the Leadtek Winfast PxDVR3200 H
- Added support for DVBWorld 2104 and TeVii S650 USB DVB-S2 cards
- Added support for Omicom SS4 DVB-S/S2 card
- Added support for Prof 7300 DVB-S/S2 cards
- Added support for TBS 8920 DVB-S/S2 card
- Added support for TeVii S460 DVB-S/S2 card
- Add gspca driver and subdrivers to MAINTAINERS
- Add Pinnacle 801e dependencies to KConfig
- Add some missing compat32 ioctls
- Add support for Asus My Cinema U3000 Hybrid
- Add support for DvbWorld 2004 DVB-S2 PCI adapter
- Add support for DvbWorld USB cards with STV0288 demodulator.
- Add support for DViCO FusionHDTV DVB-T Dual Express
- Add support for Micron MT9M111 camera.
- Add support for MSI TV@nywhere Plus remote
- Add support for Non-Pro version of Pinnacle PCTV HD USB Stick
- Add support for Pinnacle PCTV HD Pro 801e (ATSC only)
- Add support for Prolink Pixelview Global Extreme
- Add support for SDMC DM1105 PCI chip
- Add support for TCL tuner MF02GIP-5N-E
- Add support for the Gigabyte R8000-HT USB DVB-T adapter.
- Add support YUAN High-Tech STK7700D (1164:1f08)
- af9013: fix bug in status reading
- af9015: Add USB ID for AVerMedia A309
- af9015: Add USB ID for MSI DIGIVOX mini III
- af9015: Add USB ID for Telestar Starstick 2
- af9015: fix compile warnings
- anysee: initialize anysee_usb_mutex statically
- au0828: add support for another USB id for Hauppauge HVR950Q
- bttv: Add support for Encore ENLTV2-FM
- budget: Support Activy DVB-T with TDHD1 tuner
- CinergyT2: fix Kconfig typo
- cx18: Disable write retries for registers that always change - part 1.
- cx18: Fix write retries for registers that always change - part 2.
- cx18: Mark CX18_CPU_DE_RELEASE_MDL as a slow API call
- cx18: Move DVB buffer transfer handling from irq handler to work_queue
- cx18: Use correct Mailbox IRQ Ack values and misc IRQ handling cleanup
- cx88: Add support for the Hauppauge HVR4000 and HVR4000-LITE (S2) boards
- cx88-blackbird: bugfix: cx88-blackbird-mpeg-users
- cx88-blackbird: bugfix: cx88-blackbird-poll-fix
- cx88-dvb: Fix Oops in case i2c bus failed to register
- cx88: Enable TDA9887 on HVR1300 / 3000 / 4000
- cx88-mpeg: final fix for analogue only compilation + de-alloc fix
- cxusb: add lgs8gl5 and support for Magic-Pro DMB-TH usb stick
- cxusb: add support for DViCO FusionHDTV DVB-T Dual Digital 4 (rev 2)
- de-BKL cafe_ccic.c
- Documentation, especially regarding audio and informational links
- Documentation update for cx88
- dtv5100: add dependency on zl10353
- gspca: Bad init sequence for sensor HV7131B in zc3xx.
- gspca: Fix a typo in one of gspca chips name.
- gspca: Small changes for the sensor HV7131B in zc3xx.
- gspca: sonixj webcam 0c45:60fe added.
- HID: Don't allow KWorld radio fm700 be handled by usb hid drivers
- ibmcam: Fix a regression caused by a482f327ff56bc3cf53176a7eb736cea47291a1d
- initial driver for af9013 demodulator
- initial driver for af9015 chipset
- Initial support for AME DTV-5100 USB2.0 DVB-T
- ivtv/cx18: fix test whether modules should be loaded or not.
- ivtv/ivtvfb: no longer experimental
- ivtv: remove incorrect V4L1 tvaudio dependency
- kconfig patch
- Minor fixes to the saa7110 driver
- Optimization: Enable gate in a symmetric/disciplined way,
- Add remote control support to Nova-TD (52009)
- saa7134: fix resource map sanity check conflict
- Pinnacle Hybrid PCTV Pro (pctv310c) DVB-T support
- pvrusb2: Remove BKL
- radio-mr800: Add driver for AverMedia MR 800 USB FM radio devices
- radio-si470x: add support for kworld usb radio
- S2API: Added dvb frontend changes to support a newer tuning API
- S2API: Add Multiple-frontend on a single adapter support.
- saa7134: Add support for Avermedia PCI pure analog (M135A)
- saa7134: Add support for Encore version 5.3 board
- saa7134: Add support for Real Audio 220
- saa7134: add support for the triple Asus Tiger 3in1
- saa7134: fixes for the Asus Tiger Revision 1.00
- saa7134: Hauppauge HVR-1110, support for radio and analog audio in
- sms1xxx: support two new revisions of the Hauppauge WinTV MiniStick
- Support IR remote on FusionHDTV DVB-T Dual Express
- unplug oops from dvb_frontend_init...
- uvcvideo: Add support for a Bison Electronics webcam found in the Fujitsu Amilo SI2636.
- uvcvideo : Add support for Advent 4211 integrated webcam
- uvcvideo: Support two new Bison Electronics webcams.
- v4l2: extend MPEG Encoding API with AVC and AAC
- v4l: add AC-3 audio support to the MPEG Encoding API
- v4l: move BKL down to the driver level.
- remove tuner-3036 and dpc7146 drivers from feature-removal-schedule.txt
Hardware-Monitoring/I2C/EDAC/Watchdog:
- Add c2 port support
- adt7462: new hwmon driver
- drivers/hwmon/applesmc.c: add generic MacPro support
- hwmon: (abituguru3) enable DMI probing feature on AW9D-MAX
- hwmon: applesmc: add support for iMac 5
- hwmon: applesmc: Add support for iMac 6
- hwmon: applesmc: add support for iMac 8
- hwmon: applesmc: add support for Macbook 5
- hwmon: applesmc: add support for Macbook Pro 5
- hwmon: (lm90) Add support for the LM99 16 degree offset
- hwmon: (lm90) Fix handling of hysteresis value
- hwmon: (lm90) Support MAX6646, MAX6647 and MAX6649
- hwmon-vid: Add support for AMD family 10h CPUs
- hwmon: (w83791d) add manual PWM support
- hwmon: (w83791d) add support for thermal cruise mode
- i2c: Document the implementation details of the /dev interface
- i2c: Improve dev-interface documentation
- i2c: Renesas Highlander FPGA SMBus support
- i2c-viapro: Add support for SMBus Process Call transactions
- i2c-viapro: Add VX800/VX820 support
- i2c-i801: Add support for Intel Ibex Peak
- i7300_idle driver v1.55
- leds: Add driver for HP harddisk protection LEDs
- lm85: support adt7468 chips
- Schedule removal of the legacy i2c device driver binding model
- WATCHDOG Add driver for winbond w83697ug/uf watchdog feature
- WATCHDOG add watchdog driver IT8716 IT8726 IT8712J/K
- iTCO_wdt: add PCI ID's for ICH9/ICH10 chipsets
- Staging: add Alacritech slicoss network driver
- Staging: add Kconfig entries and Makefile infrastructure
- Staging: add sxg network driver
- Staging: add et131x network driver
- Staging: add me4000 firmware files
- Staging: add me4000 pci data collection driver
- Staging: add poch driver
- Staging: USB/IP: add host driver
- Staging: USB/IP: add client driver
- Staging: USB/IP: add common functions needed
- Staging: add the go7007 video driver
- Staging: add w35und wifi driver
- Staging: Fix gcc warnings in sxg
- Staging: go7007 v4l fixes
- Staging: add echo cancelation module
- Staging: SLICOSS: Fix warnings due to static usage
- Staging: SLICOSS: Fix remaining type names
- Staging: SLICOSS: Call pci_release_regions at driver exit
- Staging: workaround build system bug
- Staging: Lindent sxg.c
- Staging: SLICOSS: lots of checkpatch fixes
- coldfire: scheduled SERIAL_COLDFIRE removal
- IA64 Add Variable Page Size and IA64 Support in Intel IOMMU
- ics932s401: new clock generator chip driver
- intel-iommu: IA64 support
- mfd: Add WM8350 interrupt support
- mfd: Core support for the WM8350 AudioPlus PMIC
- mfd: Core support for the WM8400 AudioPlus HiFi CODEC and PMU
- mfd: TWL4030 core driver
- mfd: twl4030-gpio driver
- mlx4_core: Add Ethernet PCI device IDs
- mlx4_core: Multiple port type support
- mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC
- regulator: Add WM8350 regulator support
- regulator: Add WM8400 regulator support
- regulator: core - Rework machine API to remove string based functions.
- Remove videobook.tmpl
- sfc: Correct address of gPXE boot configuration in EEPROM
Einen der voranstehenden Auflistung ähnlichen Überblick sowie eine Kurzbeschreibung der wichtigsten Änderungen von 2.6.28 pflegen auch die Kernelnewbies in ihrem Wiki. Wer es noch detaillierter wissen möchte, durchkämmt das mehrere Megabyte große Changelog, das die zu jedem einzelnen Commit im Quellcodeverwaltungssystem von Linux gehörenden Kommentare enthält, welche den jeweiligen Patch des Commits beschreiben. Alternativ kann man sich auch im Git-Webinterface durch die Kernel-Quellen und deren jüngste Änderungen arbeiten; dort hat man zum jeweiligen Kommentar auch gleich den zugehörenden Patch im Zugriff. (thl/c't) (thl)