KMS und Firmware für Open-Source Radeon Treiber

Gentoo-Blog Ersatz

Moderator: el_hakim

Antworten
tel
Beiträge: 87
Registriert: 28.09.2007, 20:35

KMS und Firmware für Open-Source Radeon Treiber

Beitrag von tel » 26.03.2012, 20:27

Das der Open Source Treiber für AMD Grafikkarten (Treibername: radeon, Ebuild: x11-drivers/xf86-video-ati)
über das zugehörige Kernemodul (Modulname: radeon) ein oder mehrere Firmware-Dateien laden muss,
ist (war mir jedenfalls) bekannt.

Dafür hat es bisher ausgereicht, wenn entweder
x11-drivers/radeon-ucode
oder ab den 3.0er Kerneln besser
sys-kernel/linux-firmware
installiert war. Das packt die passenden Dateien in das Verzeichnis /lib/firmware/radeon, von wo
aus sie das Kernelmodul des Treibers laden kann.

Bei Verwendung von Kernel-Based-Modesetting (KMS) gibt es aber etwa ab Version 6.13 ein Problem mit der Firmware. Es sind neue Firmware-Dateien dazugekommen, für die HD3000er -Serie ist das r600_rlc.bin (für andere GPU-Generationen sinngemäß z.B. CAYMAN_rlc.bin).
Diese benötigt das Kernelmodul unbedingt, sonst funktioniert kein Direkt-Rendering.

Bei eingeschaltetem KMS wird allerdings das radeon-Modul oder alternativ der im Kernel integrierte Treiber zu einem Zeitpunkt geladen, zu dem das root-Filesystem noch nicht gemountet ist. Folgerichtig kann die r600_rlc.bin nicht gefunden werden - im System-Log steht:

Code: Alles auswählen

[drm] Loading RS780 Microcode
r600_cp: Failed to load firmware "radeon/R600_rlc.bin"
[drm:r600_startup] *ERROR* Failed to load firmware!
radeon 0000:01:05.0: disabling GPU acceleration
Lösung:
---------
Die Firmware-Datei muss in den Kernel bzw. das Kernel-Modul integriert werden.

Die Optionen in der .config des Kernels sind:

Code: Alles auswählen

CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE="radeon/R600_rlc.bin"
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
Diese Optionen sind bei Konfiguration über make menuconfig etwas versteckt (musste auch
erst eine Weile suchen) zu finden unter:
Device Drivers ---> Generic Driver Options ---> :
-*- Userspace firmware loading support
[*] Include in-kernel firmware blobs in kernel binary
(radeon/R600_rlc.bin) External firmware blobs to build into the kernel binary
(/lib/firmware) Firmware blobs root directory
[/i]
Die letzte Zeile erscheint zur vollständigen Verwirrung erst, wenn man in der vorletzten Zeile
etwas eingegeben hat.

Den Kernel neu bauen lassen, Module installieren, neustarten - schon funktioniert das Direkt-Rendering wieder.

Alternative:
-------------
Die Firmware-Files in die initrd integrieren, so man denn eine benutzt. Das ist bei mir nicht der Fall, daher
kenne ich mich damit nicht aus, also keine weiteren Erklärungsversuche.

Quelle:
http://www.linuxquestions.org/questions ... in-791940/
http://lists.freedesktop.org/archives/d ... 11803.html

Antworten