Der Kernel 3.10 wird gigantisch

Geschrieben von MMind am Montag, 15. April 2013 in E-Book Reader

Das Release des Kernel 3.9 nähert sich mit großen Schritten und wenn ich meinem Patch-Tracker glauben darf, wird der folgende 3.10 mein volumenstärkster Kernel bisher. Die dortige Statistik sagt mir:

  • 48 individual patches
  • 1832 lines added
  • 1680 lines removed

Die 48 Patches sind also nochmal knapp 40% meiner bisherigen Kernel-Patches — schon cool. Im Einzelnen gehören dazu:

Die Restarbeiten der Interrupt-Umstellung, die ja bereits letztens erwähnt wurden (ARM: S3C24XX: irq rework for S3C2412, S3C2440 and S3C2442, ARM: S3C24XX: integrate special s3c2412 eint handling, ARM: S3C24XX: more fixes and enhancements for the s3c24xx irqs).

Die DeviceTree-Unterstützung für die Interrupt-Controller war dann doch nicht ganz so trivial und weckte etwas Diskussionsbedarf — wie an der Menge der Revisionen gut zu erkennen ist. Jetzt nach allen Änderungen muss ich aber auch sagen, dass die Devicetree-Syntax für die Interrupt-Controller deutlich besser gworden ist, als mein erster Versuch.

Der Rest ist dann im Vergleich dazu eher Kleinkram. Der Oyo-Display-Controller bekommt die Fähigkeit die Anzeige zu rotieren und den Anwendungen 16bit vorzugaukeln, da nicht alle Anwendungen mit einem palettenbasierten Display zurechtkommen. Der Oyo-Touchscreen bekommt Devicetree-Unterstützung. Und dann gibts da noch ein paar weitere Kleinigkeiten in anderen Teilen.

Nach Ladenschluss

Momentan läuft die vermutlich letzte Woche des Entwicklungszyklus von 3.9. Das heißt, alle Features für das Merge-Window von 3.10 müssen jetzt bereits linux-next erreicht haben. Leider bedeutet dies auch, dass einige meiner Patches erst für 3.11 in Frage kommen.

Dies sind der Pinctrl-Treiber für die Samsung S3C24xx SoCs und die generelle Devicetree-Unterstützung für den S3C2416.

1 Kommentar Mehr...

Großprojekt beendet

Geschrieben von MMind am Donnerstag, 7. Februar 2013 in E-Book Reader

Vor ein paar Tagen kam mit der Aufnahme in den Samsung-Maintainer-Tree mein bisher größtes Restrukturierungsprojekt der älteren Samsung-SoCs zu einem vorläufigen Ende. Im Kern ging es dabei um eine Neuordnung des Codes, der die Interrupt-Controller der S3C24XX-SoCs steuert, um später DeviceTree-Unterstützung für die S3C24XX-SoCs realisieren zu können — mehr zu DeviceTree folgt in einem späteren Eintrag.

Bisheriger Zustand

Die S3C24XX-SoCs verwenden zwar den selben Interrupt-Controller, dessen innere Struktur unterscheidet sich jedoch zwischen allen SoC-Varianten. Im Endeffekt handelt es sich »nur« um unterschiedlich belegte Bits in den Registern des Controllers. Zur Verdeutlichung ein kleines Beispiel:

Bit0...18...
S3C2410EINT0...DMA1...
S3C2416EINT0...UART3...

Der S3C2410 signalisiert also in Bit 18 Interrupts des zweiten DMA-Kanals, während der S3C2416 dort Interrupts der vierten seriellen Schnittstelle signalisiert.

Implementiert war das Ganze dann derart, dass ein generischer Interrupt-Init die Struktur für den S3C2410 zusammenbaute und später dann eine SoC-spezifische zweite Init-Funktion, die geänderten Werte überschrieb. Diese zweite Funktion wurde über einen arch_initcall und damit zu einem gänzlich anderen Zeitpunkt gestartet.

Ein zweites großes Manko war die Festlegung auf statische Interrupt-Nummern. In arch/arm/mach-s3c24xx/include/mach/irqs.h waren den jeweiligen Interrupts feste Nummern zugewiesen und diese Nummern wurden auch durch den ganzen Interrupt-Code verstreut verwendet. D.h. es fanden sich überall Fragmente wie das folgende:

if (irq >= IRQ_EINT0 && irq <= IRQ_EINT3) ....

Dadurch kam es zu vielen Code-Dopplungen die sich nur in den verwendeten Interrupt-Nummern unterschieden.

Als drittes großes Problem ist noch das fehlen einer IRQ-Domain, welche aber für DeviceTree-Unterstützung absolut notwendig ist.

Der gesamte Prozess zog sich von Anfang November bis Ende Januar und große Teile davon entstanden auf den Flughäfen von Barcelone, Frankfurt und Hong Kong :-) .

Neue Weltordnung

Nach dem Entfernen und Hinzufügen von 1132 respektive 688 Codezeilen stellt sich das System nun folgendermassen dar. Der gesamte Aufbau folgt nun einem deklarativen Ansatz. In einer speziellen Struktur werden die Parameter der Interrupt, also Typ und gegebenenfalls Eltern-Interrupt deklariert. Die mehrfach vorhandenen Funktionen zum quittieren, maskieren und demaskieren von Interrupts sind verschwunden und wurden durch einen einzigen Satz von Funktionen ersetzt, die ihr spezifisches Verhalten aus der Interrupt-Deklaration ableiten.

Ebenso wird jetzt für jeden der Subinterrupt-Controller eine IRQ-Domain erstellt und der vorherige zweistufige Init ist auch normalisiert.

Ausblick

Als Restarbeit müssen noch die S3C2412, S3C2440 und S3C2442 Varianten in die neue Struktur konvertiert werden. Nachdem das generelle Konzept aber angenommen wurde, ist dies nichtmehr allzu schwierig. Die eigentliche DeviceTree-Unterstützung im Interrupt-Code ist dann auch nur noch eine relativ kleine Änderung, die auch schon im Großen und Ganzen existiert und nur noch etwas Feinschliff benötigt.

1 Kommentar Mehr...

LinuxCon Europe und ELCE Tag 3

Geschrieben von MMind am Donnerstag, 8. November 2012 in Auswärts

Der dritte Tag begann mit einer Keynote »Research into Open Hardware«, d.h. Hardware bei der Informationen, Teilelisten etc frei verfügbar sind. Danach folgt die Veranstaltung, die vermutlich das Highlight der LinuxCon Europe war. Dirk Hohndel unterhielt sich mit Linus Torvalds über »Linux: Where are we going«. Der größte Vortragsraum war brechend voll, eine Menge Leute hatten noch nicht mal einen Sitzplatz gefunden und trotzdem saß ich ziemlich gut in der vierten Reihe.

Dirk Hohndel und Linus Torvalds

Die Fragen aus dem Publikum sind in solchen Gesprächsrunden trotzdem immer sehr ähnlich. Natürlich kam die Frage zu NVidia, zu der Linus aber nur schmunzelnd meinte, diese wäre »exhaustively answered«. Auf die Frage ob es wirklich notwendig ist, große Teile der Kernel-Interna so oft umzubauen, meinte er, dass man doch lieber aktuelle Kernel »tracken« sollte, statt sich an alten Kernelversionen festzuklammern. Denn bei einem sehr großen Versionssprung ist der Update-Aufwand enorm, wenn man statt dessen immer direkt zwischen aufeinander folgenden Kernel-Veröffentlichungen updated, ist dies meist ziemlich schmerzfrei.

Aus meinen Erfahrungen mit dem Oyo-Kernel kann ich das bestätigen. Ich wechsle ja immer direkt zum jeweiligen -rc1. Dieses Update von der Vorgängerversion ist im Allgemeinen auch innerhalb von 1-2 Stunden abgeschlossen — je nachdem ob irgendwas größeres kaputt gegangen ist.

Die nächste Veranstaltung war dann »DRM/KMS, FB and V4L2«, ein grober Überblick über die verschiedenen Grafik-Subsysteme die der Kernel bereitstellt. Hier ergab sich für mich sogar mal eine Frage, nämlich ob sich ein protokollieren der veränderten Display-Bereiche im KMS-Subsystem ähnlich dem deferred-io in manchen Framebuffer-Treibern realisieren lässt. Es wäre mal interessant einen EPD-Treiber zu entwickeln, der KMS nutzt. Das Tracken der Bereiche sollte in der Theorie auch funktionieren, es hat nur noch nie jemand probiert.

Dann folgte mit »Regmap: The Power of Subsystems and Abstractions« eine Einführung in ebendieses System, dass hilft Zugriffe auf externe Register — zum Beispiel von I2C-Geräten — zu optimieren.

Die nächsten zwei Präsentationen beschäftigten sich mit »Low-Level Linux Debugging without Greay Beards« und »Debugging Embedded Linux (Kernel) Power Management«. Diese besondere Erkenntnis hier war, dass es keine besondere Erkenntnis gab — das heißt, ich wußte ungefähr wovon sie sprachen, habe nur Dinge am Rand als wirklich neu empfungen und demzufolge nur wenige Wissenslücken auf dem Gebiet.

Der letzte Vortrag des Tages war dann »UBI Fastmap«, der sich mit einer speziellen Ablagestruktur der Daten auf echtem Flash-Speicher beschäftigt. Während alle Geräte die ich momentan bebastele, entweder über SD-Karten oder eMMC-Speicher verfügen, war es trotzdem sehr interessant einen kleinen Einblick zu erhaschen wie man das Wear-leveling auf echten Flash-Speichern realisieren (und beschleunigen) kann. Ausserdem ist Thomas Gleixner, den ich ja am Vortag kennengelernt hatte, ein sehr unterhaltsamer sprecher.

0 Kommentare Mehr...

LinuxCon Europe und ELCE Tag 2

Geschrieben von MMind am Mittwoch, 7. November 2012 in Auswärts

Am heutigen zweiten Tag hatte die ELCE sogar ihre eigene Keynote. In »Are we headed for a Complexity Apocalypse in Embedded SoCs« beschäftigte sich Matt Locke von Texas Instruments mit der Frage, wie man den gestiegenen Anforderungen — viel mehr Funktionen in den SoCs und viel kürzere Produktzyklen — sinnvoll begegnen kann. Statt wie bisher mit der Softwareentwicklung zu beginnen nachdem die Hardware fertig ist, sollen die Hard- und Softwareteams gleich von Beginn an zusammenarbeiten, um so nicht nur die Entwicklungszeit zu verkürzen, sondern auch gemeinsam zu besseren Lösungen zu finden.

Danach habe ich mir eine Präsentation über den »Barebox Bootloader« angesehen. Bei dem Namen hatte ich eigentlich einen extrem schlanken Bootloader ähnlich Qi erwartet. Stattdessen ist Barebox aber ein u-boot-Fork, der alles irgendwie anders machen möchte. Selbst mag ich ja wirklich den Ansatz des schlanken Bootloaders, der nichts anderes tut als einen Linux-Kernel zu laden und alle anderen Sperenzchen bleiben lässt. Warum dies ein sinnvoller Ansatz ist, hat Andy Green vor Jahren mal aufgeschrieben.

Danach folgte »The End of Embedded Linux (As we know it)« wo Chris Simmonds reguläre und embedded Distributionen sowie Android auf ihre Tauglichkeit für die embedded Entwicklung untersuchte.

Nach der Mittagspause sah man dann auch Linus Torvalds im Hotel rumlaufen — ich hatte ihn mir irgendwie größer vorgestellt.

Die nächste Veranstaltungen »Linux Power Supply Charging Subsystem« brachte dann einen kurzen Überblick über neuere Möglichkeiten Ladezyklen von Geräten zu steuern, die mehrere Stromquellen besitzen (USB-Kabel + dediziertes Ladegerät)

»Your new ARM SoC Linux Support Check-List« stellte dann am Beispiel zweier Marvell Armada SoCs einige neue Kernelsubsysteme wie DeviceTree und PinCtrl vor.

Als letztes habe ich mir dann noch »Qt on Embedded Systems« angesehen, wo die Geschichte von embedded Qt vorgestellt und auch seine Zukunft beleuchtet wurde. Kurzfassung QWS ist tot und wird es in Qt5 nicht mehr geben. Stattdessen soll alles über die Qt Platform Abstraction (QPA) gelöst werden.

Das Highlight des Tages war dann aber die Reception, die von Hauptsponsor Intel im Casa Batlló ausgerichtet wurde. Mit Getränken, Häppchen und Musik klang der Tag aus.

Musik im Casa Batlló
0 Kommentare Mehr...

LinuxCon Europe und ELCE Tag 1

Geschrieben von MMind am Montag, 5. November 2012 in Auswärts

Heute war also der erste Konferenz-Tag. Als ich die Schlange quer durchs Foyer gesehen hab, war ich richtig froh meinen Ausweis schon gestern geholt zu haben. Ansonsten hieß es » 25% mehr Besucher als letztes Jahr« — überall wimmelte es nur so vor Menschen.

Allererste Handlung war natürlich das »conference package« abzuholen — ein paar Flyer und ein T-Shirt. Dazu gab es aber auch noch einen praktischen Stoffbeutel in den man die ganzen weiteren Goodies verstauen konnte, die es bei den verschiedenen weiteren Austellern gab — dem Dasein als Beutelratte stand also nichts mehr im Wege. Meine Beute sah dann so aus:

Fette Beute

Neben den vier T-Shirts ist ein besonderes Highlight das Paar Touchscreen-Handschuhe von Oracle — nun kann der Winter kommen.

Mein heutiges Programm umfasste die Keynote »Advancing the user experience« von Mark Shuttleworth, das »Maintainer's Diary: Devicetree and its stumbling blocks« — ich hab zwar noch nichts darüber geschrieben, aber mein eReader-Kernel nutzt auch schon für einige Teile DeviceTree. Weiterhin »A war story: Porting Android 4.0 to a Custom Board« — man weiß ja nie wann man mal etwas Android-Hintergrundwissen braucht, »OpenOCD: Hardware debugging and more« — JTAG und dergleichen muss ich mir sowieso nochmal genauer ansehen, denn die Qisda-Reader stellen ja die JTAG-Pins auf ihrem Debug-Port zur Verfügung. Ausserdem »A New File System Designed for Flash Storage in Mobile« versucht Samsung ja gerade in den Mainline-Kernel zu bringen und soll auf FTL-Hardware* deutliche Geschwindigkeitsverbesserungen bringen und »Upgrading without Bricking«, dass mir aber nicht viel neues vermittelt hat.

Am Ende folgten dann noch die Keynotes »Linux: At the Forefront« vom CTO von RedHat Brian Stevens, der aber dermasse dort durchgehetzt ist, das ich nicht sonderlich viel behalten habe und der »Linux Kernel Report« vom LWN-Editor Jonathan Corbet.

Als besonderes Schmankerl habe ich dann noch kurz Greg Kroah-Hartman belagert — Stable-Kernel-und-vieles-mehr-Maintainer — der meinen GnuPG-Schlüssel signieren wird.

* FTL steht für »Flash-Translation-Layer« und meint Geräte bei denen das Flash nicht einfach so beschrieben wird, sondern die ihren eigenen Controller mitbringen, der zum Beispiel das Wear-Leveling übernimmt. Dazu gehören zum Beispiel SD-Karten oder eMMC Bausteine.

0 Kommentare Mehr...

Seite 3 von 24, insgesamt 117 Einträge

Suche

Nach Einträgen suchen in Outside the Walled Garden:

Das Gesuchte nicht gefunden? Gib einen Kommentar in einem Eintrag ab oder nimm per E-Mail Kontakt auf!